diff options
author | siddharth <s@ricketyspace.net> | 2021-11-27 18:57:44 -0500 |
---|---|---|
committer | siddharth <s@ricketyspace.net> | 2021-11-27 18:57:44 -0500 |
commit | a3703d923b5516da967164c41f49aa9e2f8a57d7 (patch) | |
tree | 2c97e8233c4c9cdcbd503b730fbdb384dcbae82e /feed | |
parent | 6da48b8b76eec5864510b6cdbeb5398a5ca3ce97 (diff) |
feed: add nprUnmarshal
Unmarshler for a NPR Feed.
Diffstat (limited to 'feed')
-rw-r--r-- | feed/feed.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/feed/feed.go b/feed/feed.go index 109de5e..b20a281 100644 --- a/feed/feed.go +++ b/feed/feed.go @@ -4,11 +4,15 @@ package feed import ( + "encoding/xml" "fmt" "io" "net/http" "os" "path" + "time" + + "ricketyspace.net/fern/schema" ) type Feed struct { @@ -82,3 +86,22 @@ func (feed *Feed) get() ([]byte, error) { return bs, nil } + +// Unmarshal a NPR feed. +func nprUnmarshal(bs []byte) (schema.NPRFeed, error) { + nprFeed := new(schema.NPRFeed) + err := xml.Unmarshal(bs, nprFeed) + if err != nil { + return *nprFeed, err + } + + // Parse time for all entries. + for i, entry := range nprFeed.Entries { + nprFeed.Entries[i].PubTime, err = time.Parse(time.RFC1123Z, entry.Pub) + if err != nil { + return *nprFeed, err + } + } + return *nprFeed, nil +} + |