aboutsummaryrefslogtreecommitdiff
path: root/internal/feed
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2021-12-21 23:13:22 +0100
committerRené 'Necoro' Neumann <necoro@necoro.eu>2021-12-21 23:13:22 +0100
commit56942b5372aa16de00dbbf6a9ab33836802a3f10 (patch)
treece719dc7ac477077536c8a844ffb55611b032da7 /internal/feed
parent549fa5aaf56a23a090e27f273f15ee09dd0a37cf (diff)
downloadfeed2imap-go-56942b5372aa16de00dbbf6a9ab33836802a3f10.tar.gz
feed2imap-go-56942b5372aa16de00dbbf6a9ab33836802a3f10.tar.bz2
feed2imap-go-56942b5372aa16de00dbbf6a9ab33836802a3f10.zip
Prefer the self-link of the feed over the URL.
Rationale: The URL we use to access the feed may be an (old) alias. Relative URLs in feed items are written with the "real" URL of the feed in mind, though.
Diffstat (limited to '')
-rw-r--r--internal/feed/feed.go26
1 files changed, 16 insertions, 10 deletions
diff --git a/internal/feed/feed.go b/internal/feed/feed.go
index 014f8b6..0741e8c 100644
--- a/internal/feed/feed.go
+++ b/internal/feed/feed.go
@@ -138,18 +138,24 @@ func (feed *Feed) id() string {
func (feed *Feed) url() *url.URL {
var feedUrl *url.URL
- var err error
- if feed.Url != "" {
- feedUrl, err = url.Parse(feed.Url)
- if err != nil {
- panic(fmt.Sprintf("URL '%s' of feed '%s' is not a valid URL. How have we ended up here?", feed.Url, feed.Name))
- }
- } else if feed.feed.Link != "" {
- feedUrl, err = url.Parse(feed.feed.Link)
- if err != nil {
- panic(fmt.Sprintf("Link '%s' of feed '%s' is not a valid URL.", feed.feed.Link, feed.Name))
+ tryUrl := func(content, what string) bool {
+ var err error
+ if content != "" {
+ feedUrl, err = url.Parse(content)
+ if err != nil {
+ log.Errorf("%s '%s' of feed '%s' is not a valid URL.", what, content, feed.Name)
+ } else {
+ return true
+ }
}
+ return false
+ }
+
+ if !(tryUrl(feed.feed.FeedLink, "Self-Link") ||
+ tryUrl(feed.Url, "URL") ||
+ tryUrl(feed.feed.Link, "Link")) {
+ panic(fmt.Sprintf("Could not find a valid URL for for feed '%s'. How have we ended up here?", feed.Name))
}
return feedUrl