generated from alecodes/base-template
wip: add basic linkding connection
This commit is contained in:
parent
43cd24e4d0
commit
5f5d6bb2e2
7 changed files with 66 additions and 23 deletions
|
|
@ -8,11 +8,12 @@ import (
|
|||
"github.com/spf13/viper"
|
||||
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/app"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/miniflux"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/service"
|
||||
)
|
||||
|
||||
var Services = []string{
|
||||
"linkding",
|
||||
string(service.ServiceLinkding),
|
||||
}
|
||||
|
||||
var (
|
||||
|
|
@ -29,16 +30,16 @@ var archiveCmd = &cobra.Command{
|
|||
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
|
||||
ValidArgs: Services,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
service := args[0]
|
||||
service := service.ServiceOption(args[0])
|
||||
|
||||
serviceConfig := app.ServiceConfig{
|
||||
serviceConfig := config.ServiceConfig{
|
||||
Service: service,
|
||||
Host: service_host,
|
||||
User: service_user,
|
||||
Token: service_token,
|
||||
}
|
||||
|
||||
minifluxConfig := miniflux.MinifluxConfig{
|
||||
minifluxConfig := config.MinifluxConfig{
|
||||
Host: viper.GetString("miniflux_host"),
|
||||
Token: viper.GetString("miniflux_token"),
|
||||
FeedId: viper.GetInt64("miniflux_feed_id"),
|
||||
|
|
|
|||
|
|
@ -3,16 +3,23 @@ package app
|
|||
import (
|
||||
"fmt"
|
||||
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/miniflux"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/service"
|
||||
)
|
||||
|
||||
func Archive(minifluxConfig miniflux.MinifluxConfig, serviceConfig ServiceConfig) {
|
||||
func Archive(minifluxConfig config.MinifluxConfig, serviceConfig config.ServiceConfig) {
|
||||
mf, err := miniflux.NewMiniflux(minifluxConfig)
|
||||
if err != nil {
|
||||
logger.Fatal("Could not connect to the miniflux server: %v", err)
|
||||
}
|
||||
|
||||
servi, err := service.ResolveService(serviceConfig)
|
||||
if err != nil {
|
||||
logger.Fatal("Could not connect to the miniflux server: %v", err)
|
||||
}
|
||||
|
||||
result, err := mf.GetEntries()
|
||||
if err != nil {
|
||||
logger.Fatal("Could not retrieve entries from the miniflux feed: %v", err)
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
package app
|
||||
|
||||
type ServiceConfig struct {
|
||||
Service string
|
||||
Host string
|
||||
User string
|
||||
Token string
|
||||
}
|
||||
17
internal/config/config.go
Normal file
17
internal/config/config.go
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
package config
|
||||
|
||||
import "git.alecodes.page/alecodes/miniflux-archiver/internal/service"
|
||||
|
||||
type MinifluxConfig struct {
|
||||
Host string
|
||||
User string
|
||||
Token string
|
||||
FeedId int64
|
||||
}
|
||||
|
||||
type ServiceConfig struct {
|
||||
Service service.ServiceOption
|
||||
Host string
|
||||
User string
|
||||
Token string
|
||||
}
|
||||
|
|
@ -1,19 +1,13 @@
|
|||
package miniflux
|
||||
|
||||
import (
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
||||
mfApi "miniflux.app/v2/client"
|
||||
)
|
||||
|
||||
type MinifluxConfig struct {
|
||||
Host string
|
||||
User string
|
||||
Token string
|
||||
FeedId int64
|
||||
}
|
||||
|
||||
type Miniflux struct {
|
||||
MinifluxConfig
|
||||
config.MinifluxConfig
|
||||
client *mfApi.Client
|
||||
}
|
||||
|
||||
|
|
@ -25,7 +19,7 @@ func (mf *Miniflux) GetEntries() (*mfApi.EntryResultSet, error) {
|
|||
return mf.client.FeedEntries(mf.FeedId, filter)
|
||||
}
|
||||
|
||||
func NewMiniflux(config MinifluxConfig) (*Miniflux, error) {
|
||||
func NewMiniflux(config config.MinifluxConfig) (*Miniflux, error) {
|
||||
mf := &Miniflux{
|
||||
MinifluxConfig: config,
|
||||
client: mfApi.NewClient(config.Host, config.Token),
|
||||
|
|
|
|||
7
internal/service/linkding/linkding.go
Normal file
7
internal/service/linkding/linkding.go
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
package linkding
|
||||
|
||||
import "git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||
|
||||
type Linkding struct {
|
||||
config.ServiceConfig
|
||||
}
|
||||
25
internal/service/service.go
Normal file
25
internal/service/service.go
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/service/linkding"
|
||||
)
|
||||
|
||||
type ServiceOption string
|
||||
|
||||
const (
|
||||
ServiceLinkding ServiceOption = "linkding"
|
||||
)
|
||||
|
||||
type Service interface{}
|
||||
|
||||
func ResolveService(serviceConfig config.ServiceConfig) Service {
|
||||
switch serviceConfig.Service {
|
||||
case ServiceLinkding:
|
||||
return &linkding.Linkding{
|
||||
ServiceConfig: serviceConfig,
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue