From 32fb040086d00c5fc1c5cc3e06377a018053efe5 Mon Sep 17 00:00:00 2001 From: guyfedwards Date: Sun, 21 Dec 2025 19:41:44 +0000 Subject: [PATCH] chore: make GetFeeds method on backends --- internal/config/backends.go | 33 ++++++++++++++++++++++++++------- internal/config/config.go | 21 ++------------------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/internal/config/backends.go b/internal/config/backends.go index c541d5d..a6b7847 100644 --- a/internal/config/backends.go +++ b/internal/config/backends.go @@ -3,6 +3,7 @@ package config import ( "encoding/json" "fmt" + "io" "io/ioutil" "net/http" "strings" @@ -10,8 +11,25 @@ import ( miniflux "miniflux.app/client" ) -func getMinifluxFeeds(config *MinifluxBackend) ([]Feed, error) { - mf := miniflux.New(config.Host, config.APIKey) +type MinifluxBackend struct { + Host string `yaml:"host"` + APIKey string `yaml:"api_key"` +} + +type FreshRSSBackend struct { + Host string `yaml:"host"` + User string `yaml:"user"` + Password string `yaml:"password"` + PrefixCats bool `yaml:"prefixCats"` +} + +type Backends struct { + Miniflux *MinifluxBackend `yaml:"miniflux,omitempty"` + FreshRSS *FreshRSSBackend `yaml:"freshrss,omitempty"` +} + +func (mfb *MinifluxBackend) GetFeeds() ([]Feed, error) { + mf := miniflux.New(mfb.Host, mfb.APIKey) // Fetch all feeds. feeds, err := mf.Feeds() @@ -52,8 +70,8 @@ func (frss FreshRSSFeed) GetCats() string { return ret } -func getFreshRSSFeeds(config *FreshRSSBackend) ([]Feed, error) { - resp, err := http.Get(fmt.Sprintf("%v/api/greader.php/accounts/ClientLogin?Email=%v&Passwd=%v", config.Host, config.User, config.Password)) +func (frp *FreshRSSBackend) GetFeeds() ([]Feed, error) { + resp, err := http.Get(fmt.Sprintf("%v/api/greader.php/accounts/ClientLogin?Email=%v&Passwd=%v", frp.Host, frp.User, frp.Password)) if err != nil { return []Feed{}, err } @@ -71,7 +89,7 @@ func getFreshRSSFeeds(config *FreshRSSBackend) ([]Feed, error) { lines := strings.Split(string(body), "\n") kv := strings.Split(lines[0], "=") - url := fmt.Sprintf("%v/api/greader.php/reader/api/0/subscription/list?output=json", config.Host) + url := fmt.Sprintf("%v/api/greader.php/reader/api/0/subscription/list?output=json", frp.Host) req, err := http.NewRequest("GET", url, nil) if err != nil { return []Feed{}, err @@ -84,7 +102,7 @@ func getFreshRSSFeeds(config *FreshRSSBackend) ([]Feed, error) { return []Feed{}, err } - body, err = ioutil.ReadAll(resp.Body) + body, err = io.ReadAll(resp.Body) if err != nil { return []Feed{}, err } @@ -99,9 +117,10 @@ func getFreshRSSFeeds(config *FreshRSSBackend) ([]Feed, error) { for _, f := range b.Subscriptions { name := "" - if config.PrefixCats { + if frp.PrefixCats { name = f.GetCats() } + ret = append(ret, Feed{URL: f.URL, Name: name}) } diff --git a/internal/config/config.go b/internal/config/config.go index 9fe9c08..ec7dc75 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -25,23 +25,6 @@ type Feed struct { Tags []string `yaml:"tags,omitempty"` } -type MinifluxBackend struct { - Host string `yaml:"host"` - APIKey string `yaml:"api_key"` -} - -type FreshRSSBackend struct { - Host string `yaml:"host"` - User string `yaml:"user"` - Password string `yaml:"password"` - PrefixCats bool `yaml:"prefixCats"` -} - -type Backends struct { - Miniflux *MinifluxBackend `yaml:"miniflux,omitempty"` - FreshRSS *FreshRSSBackend `yaml:"freshrss,omitempty"` -} - type Opener struct { Regex string `yaml:"regex"` Cmd string `yaml:"cmd"` @@ -235,7 +218,7 @@ func (c *Config) Load() error { if fileConfig.Backends != nil { if fileConfig.Backends.Miniflux != nil { - mffeeds, err := getMinifluxFeeds(fileConfig.Backends.Miniflux) + mffeeds, err := fileConfig.Backends.Miniflux.GetFeeds() if err != nil { return err } @@ -244,7 +227,7 @@ func (c *Config) Load() error { } if fileConfig.Backends.FreshRSS != nil { - freshfeeds, err := getFreshRSSFeeds(fileConfig.Backends.FreshRSS) + freshfeeds, err := fileConfig.Backends.FreshRSS.GetFeeds() if err != nil { return err }