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"
|
"github.com/spf13/viper"
|
||||||
|
|
||||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/app"
|
"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{
|
var Services = []string{
|
||||||
"linkding",
|
string(service.ServiceLinkding),
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -29,16 +30,16 @@ var archiveCmd = &cobra.Command{
|
||||||
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
|
Args: cobra.MatchAll(cobra.ExactArgs(1), cobra.OnlyValidArgs),
|
||||||
ValidArgs: Services,
|
ValidArgs: Services,
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
service := args[0]
|
service := service.ServiceOption(args[0])
|
||||||
|
|
||||||
serviceConfig := app.ServiceConfig{
|
serviceConfig := config.ServiceConfig{
|
||||||
Service: service,
|
Service: service,
|
||||||
Host: service_host,
|
Host: service_host,
|
||||||
User: service_user,
|
User: service_user,
|
||||||
Token: service_token,
|
Token: service_token,
|
||||||
}
|
}
|
||||||
|
|
||||||
minifluxConfig := miniflux.MinifluxConfig{
|
minifluxConfig := config.MinifluxConfig{
|
||||||
Host: viper.GetString("miniflux_host"),
|
Host: viper.GetString("miniflux_host"),
|
||||||
Token: viper.GetString("miniflux_token"),
|
Token: viper.GetString("miniflux_token"),
|
||||||
FeedId: viper.GetInt64("miniflux_feed_id"),
|
FeedId: viper.GetInt64("miniflux_feed_id"),
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,23 @@ package app
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
||||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/miniflux"
|
"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)
|
mf, err := miniflux.NewMiniflux(minifluxConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal("Could not connect to the miniflux server: %v", err)
|
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()
|
result, err := mf.GetEntries()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Fatal("Could not retrieve entries from the miniflux feed: %v", err)
|
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
|
package miniflux
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.alecodes.page/alecodes/miniflux-archiver/internal/config"
|
||||||
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
"git.alecodes.page/alecodes/miniflux-archiver/internal/logger"
|
||||||
mfApi "miniflux.app/v2/client"
|
mfApi "miniflux.app/v2/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
type MinifluxConfig struct {
|
|
||||||
Host string
|
|
||||||
User string
|
|
||||||
Token string
|
|
||||||
FeedId int64
|
|
||||||
}
|
|
||||||
|
|
||||||
type Miniflux struct {
|
type Miniflux struct {
|
||||||
MinifluxConfig
|
config.MinifluxConfig
|
||||||
client *mfApi.Client
|
client *mfApi.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -25,7 +19,7 @@ func (mf *Miniflux) GetEntries() (*mfApi.EntryResultSet, error) {
|
||||||
return mf.client.FeedEntries(mf.FeedId, filter)
|
return mf.client.FeedEntries(mf.FeedId, filter)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMiniflux(config MinifluxConfig) (*Miniflux, error) {
|
func NewMiniflux(config config.MinifluxConfig) (*Miniflux, error) {
|
||||||
mf := &Miniflux{
|
mf := &Miniflux{
|
||||||
MinifluxConfig: config,
|
MinifluxConfig: config,
|
||||||
client: mfApi.NewClient(config.Host, config.Token),
|
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