diff options
| author | Christine Dodrill <me@christine.website> | 2019-03-21 07:55:32 -0700 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-03-21 07:57:23 -0700 |
| commit | 368bd244aed0709c8b1bb05464d44f4d0cca07a4 (patch) | |
| tree | babc41308d52a97f0f3b50bad57bbb92ece79dc6 /internal/jsonfeed/jsonfeed.go | |
| parent | 47ddf59c12bc8827dafa80383c6c7b0595fecab1 (diff) | |
| download | xesite-368bd244aed0709c8b1bb05464d44f4d0cca07a4.tar.xz xesite-368bd244aed0709c8b1bb05464d44f4d0cca07a4.zip | |
vendor some dependencies
Diffstat (limited to 'internal/jsonfeed/jsonfeed.go')
| -rw-r--r-- | internal/jsonfeed/jsonfeed.go | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/internal/jsonfeed/jsonfeed.go b/internal/jsonfeed/jsonfeed.go new file mode 100644 index 0000000..913880d --- /dev/null +++ b/internal/jsonfeed/jsonfeed.go @@ -0,0 +1,73 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at http://mozilla.org/MPL/2.0/ + +package jsonfeed + +import ( + "encoding/json" + "io" + "time" +) + +const CurrentVersion = "https://jsonfeed.org/version/1" + +type Item struct { + ID string `json:"id"` + URL string `json:"url"` + ExternalURL string `json:"external_url"` + Title string `json:"title"` + ContentHTML string `json:"content_html"` + ContentText string `json:"content_text"` + Summary string `json:"summary"` + Image string `json:"image"` + BannerImage string `json:"banner_image"` + DatePublished time.Time `json:"date_published"` + DateModified time.Time `json:"date_modified"` + Author Author `json:"author"` + Tags []string `json:"tags"` +} + +type Author struct { + Name string `json:"name"` + URL string `json:"url"` + Avatar string `json:"avatar"` +} + +type Hub struct { + Type string `json:"type"` + URL string `json:"url"` +} + +type Attachment struct { + URL string `json:"url"` + MIMEType string `json:"mime_type"` + Title string `json:"title"` + SizeInBytes int64 `json:"size_in_bytes"` + DurationInSeconds int64 `json:"duration_in_seconds"` +} + +type Feed struct { + Version string `json:"version"` + Title string `json:"title"` + HomePageURL string `json:"home_page_url"` + FeedURL string `json:"feed_url"` + Description string `json:"description"` + UserComment string `json:"user_comment"` + NextURL string `json:"next_url"` + Icon string `json:"icon"` + Favicon string `json:"favicon"` + Author Author `json:"author"` + Expired bool `json:"expired"` + Hubs []Hub `json:"hubs"` + Items []Item `json:"items"` +} + +func Parse(r io.Reader) (Feed, error) { + var feed Feed + decoder := json.NewDecoder(r) + if err := decoder.Decode(&feed); err != nil { + return Feed{}, err + } + return feed, nil +} |
