diff options
| author | nytpu <alex@nytpu.com> | 2021-03-18 10:19:07 -0600 |
|---|---|---|
| committer | nytpu <alex@nytpu.com> | 2021-03-18 10:19:07 -0600 |
| commit | 5ba676ed5d2f152eda30fd0fcccafced3ff9bf10 (patch) | |
| tree | 2fe9c3acd5f844e30370bf0124cc197747894d75 /fetch/http.go | |
| parent | e1a5c68ec75b1cbae5b4bfb788412512c557e9ad (diff) | |
refactor fetch functions to insert into FullData
Diffstat (limited to 'fetch/http.go')
| -rw-r--r-- | fetch/http.go | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/fetch/http.go b/fetch/http.go index e9cc777..d214381 100644 --- a/fetch/http.go +++ b/fetch/http.go @@ -48,44 +48,38 @@ func fetchHTTP(remoteURL *url.URL) (*http.Response, error) { return resp, nil } -// newHTTPFeed will fetch and create a new core.Feed given an http url -func newHTTPFeed(remoteURL *url.URL, title string) (*core.Feed, error) { - resp, err := fetchHTTP(remoteURL) +// httpFeed will fetch and insert a new core.Feed into a core.FullData given an +// http url (or update if it's preexisting) +func httpFeed(data *core.FullData, remote *url.URL, title string) error { + resp, err := fetchHTTP(remote) if err != nil { - return nil, err + return err } defer resp.Body.Close() if resp.Header.Get("Content-Type") == "text/html" { // TODO - return nil, fmt.Errorf("Extracting feed from HTML pages is unimplemented") + return fmt.Errorf("Extracting feed from HTML pages is unimplemented") } reader := io.LimitReader(resp.Body, 1073741824) // 1 GiB gofeed, err := gofeed.NewParser().Parse(reader) if err != nil { - return nil, err + return err } feed, err := core.GofeedConvert(gofeed, title) - return feed, err -} - -// newHTTPPage will create a new core.Page given an http url -func newHTTPPage(remoteURL *url.URL, title string) (*core.Page, error) { - var page core.Page - page.Title = title - page.Link = remoteURL - - err := updateHTTPPage(&page) if err != nil { - return nil, err + return err } - return &page, nil + + InsertFeed(data, feed, remote) + return nil } -// updateHTTPPage will check an existing core.Page for changes -func updateHTTPPage(p *core.Page) error { - resp, err := fetchHTTP(p.Link) +// httpPage will fetch and insert a new core.Page into a core.FullData given an +// http url (or update if it's preexisting) +func httpPage(data *core.FullData, remote *url.URL, title string) error { + resp, err := fetchHTTP(remote) if err != nil { return err } @@ -93,14 +87,17 @@ func updateHTTPPage(p *core.Page) error { reader := io.LimitReader(resp.Body, 1073741824) // 1 GiB + var page core.Page + page.Title = title + page.Link = remote h := sha256.New() if _, err := io.Copy(h, reader); err != nil { return err } newHash := fmt.Sprintf("%x", h.Sum(nil)) - if newHash != p.Hash { - p.Hash = newHash - p.Updated = time.Now() - } + page.Hash = newHash + page.Updated = time.Now() + + InsertPage(data, &page, remote) return nil } |
