diff options
author | Frédéric Guillot <fred@miniflux.net> | 2018-10-14 11:46:41 -0700 |
---|---|---|
committer | Frédéric Guillot <fred@miniflux.net> | 2018-10-14 11:46:41 -0700 |
commit | 5870f0426002c8e26a9ff472b23e15d7bf1235f7 (patch) | |
tree | d303a45c49d0433a5d2f7bed1bcce25d85a8bc0f /reader/feed/handler.go | |
parent | d5ff4191b6087b96b88221c6d939f73931001f2a (diff) |
Simplify feed parser and format detection
- Avoid doing multiple buffer copies
- Move parser and format detection logic to its own package
Diffstat (limited to 'reader/feed/handler.go')
-rw-r--r-- | reader/feed/handler.go | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/reader/feed/handler.go b/reader/feed/handler.go index 0b81c67..0945948 100644 --- a/reader/feed/handler.go +++ b/reader/feed/handler.go @@ -14,6 +14,7 @@ import ( "miniflux.app/logger" "miniflux.app/model" "miniflux.app/reader/icon" + "miniflux.app/reader/parser" "miniflux.app/reader/processor" "miniflux.app/storage" "miniflux.app/timer" @@ -67,12 +68,11 @@ func (h *Handler) CreateFeed(userID, categoryID int64, url string, crawler bool, return nil, errors.NewLocalizedError(errDuplicate, response.EffectiveURL) } - body, err := response.NormalizeBodyEncoding() - if err != nil { + if err := response.EnsureUnicodeBody(); err != nil { return nil, errors.NewLocalizedError(errEncoding, err) } - subscription, feedErr := parseFeed(body) + subscription, feedErr := parser.ParseFeed(response.String()) if feedErr != nil { return nil, feedErr } @@ -183,12 +183,11 @@ func (h *Handler) RefreshFeed(userID, feedID int64) error { return err } - body, err := response.NormalizeBodyEncoding() - if err != nil { + if err := response.EnsureUnicodeBody(); err != nil { return errors.NewLocalizedError(errEncoding, err) } - subscription, parseErr := parseFeed(body) + subscription, parseErr := parser.ParseFeed(response.String()) if parseErr != nil { originalFeed.ParsingErrorCount++ originalFeed.ParsingErrorMsg = parseErr.Localize(printer) |