From 5f5d6bb2e2dd6876fc25d643c3ff66c1efe68954 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 18 Dec 2024 16:54:33 -0300 Subject: [PATCH] wip: add basic linkding connection --- cmd/archive.go | 11 ++++++----- internal/app/archive.go | 9 ++++++++- internal/app/service.go | 8 -------- internal/config/config.go | 17 +++++++++++++++++ internal/miniflux/miniflux.go | 12 +++--------- internal/service/linkding/linkding.go | 7 +++++++ internal/service/service.go | 25 +++++++++++++++++++++++++ 7 files changed, 66 insertions(+), 23 deletions(-) delete mode 100644 internal/app/service.go create mode 100644 internal/config/config.go create mode 100644 internal/service/linkding/linkding.go create mode 100644 internal/service/service.go diff --git a/cmd/archive.go b/cmd/archive.go index 86e1d1c..9127dc3 100644 --- a/cmd/archive.go +++ b/cmd/archive.go @@ -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"), diff --git a/internal/app/archive.go b/internal/app/archive.go index 48c8f02..d7e5f53 100644 --- a/internal/app/archive.go +++ b/internal/app/archive.go @@ -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) diff --git a/internal/app/service.go b/internal/app/service.go deleted file mode 100644 index cf3a046..0000000 --- a/internal/app/service.go +++ /dev/null @@ -1,8 +0,0 @@ -package app - -type ServiceConfig struct { - Service string - Host string - User string - Token string -} diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..6b2d59d --- /dev/null +++ b/internal/config/config.go @@ -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 +} diff --git a/internal/miniflux/miniflux.go b/internal/miniflux/miniflux.go index 66a4842..41ca4cf 100644 --- a/internal/miniflux/miniflux.go +++ b/internal/miniflux/miniflux.go @@ -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), diff --git a/internal/service/linkding/linkding.go b/internal/service/linkding/linkding.go new file mode 100644 index 0000000..178ea51 --- /dev/null +++ b/internal/service/linkding/linkding.go @@ -0,0 +1,7 @@ +package linkding + +import "git.alecodes.page/alecodes/miniflux-archiver/internal/config" + +type Linkding struct { + config.ServiceConfig +} diff --git a/internal/service/service.go b/internal/service/service.go new file mode 100644 index 0000000..ff22d41 --- /dev/null +++ b/internal/service/service.go @@ -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 +}