diff options
author | 2023-10-22 16:07:06 -0700 | |
---|---|---|
committer | 2023-10-22 18:05:37 -0700 | |
commit | eeaab72a9f76363eed3374bb784581b8e08c65d8 (patch) | |
tree | 43d4b2b7aa45881391429bf0fed4aef8908fbcfc /internal/reader/parser/parser.go | |
parent | 14e25ab9fe09b9951b38e56af2bdff7a0737b280 (diff) | |
download | v2-eeaab72a9f76363eed3374bb784581b8e08c65d8.tar.gz v2-eeaab72a9f76363eed3374bb784581b8e08c65d8.tar.zst v2-eeaab72a9f76363eed3374bb784581b8e08c65d8.zip |
Refactor feed discovery and avoid an extra HTTP request if the url provided is the feed
Diffstat (limited to 'internal/reader/parser/parser.go')
-rw-r--r-- | internal/reader/parser/parser.go | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/internal/reader/parser/parser.go b/internal/reader/parser/parser.go index 60b194d4..2843888b 100644 --- a/internal/reader/parser/parser.go +++ b/internal/reader/parser/parser.go @@ -5,7 +5,7 @@ package parser // import "miniflux.app/v2/internal/reader/parser" import ( "errors" - "strings" + "io" "miniflux.app/v2/internal/model" "miniflux.app/v2/internal/reader/atom" @@ -17,16 +17,21 @@ import ( var ErrFeedFormatNotDetected = errors.New("parser: unable to detect feed format") // ParseFeed analyzes the input data and returns a normalized feed object. -func ParseFeed(baseURL, data string) (*model.Feed, error) { - switch DetectFeedFormat(data) { +func ParseFeed(baseURL string, r io.ReadSeeker) (*model.Feed, error) { + r.Seek(0, io.SeekStart) + switch DetectFeedFormat(r) { case FormatAtom: - return atom.Parse(baseURL, strings.NewReader(data)) + r.Seek(0, io.SeekStart) + return atom.Parse(baseURL, r) case FormatRSS: - return rss.Parse(baseURL, strings.NewReader(data)) + r.Seek(0, io.SeekStart) + return rss.Parse(baseURL, r) case FormatJSON: - return json.Parse(baseURL, strings.NewReader(data)) + r.Seek(0, io.SeekStart) + return json.Parse(baseURL, r) case FormatRDF: - return rdf.Parse(baseURL, strings.NewReader(data)) + r.Seek(0, io.SeekStart) + return rdf.Parse(baseURL, r) default: return nil, ErrFeedFormatNotDetected } |