Skip to content

Commit 719f3c5

Browse files
committed
#151: Support for atom update date
1 parent 03c4299 commit 719f3c5

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"items": [
3+
{
4+
"updated": "Thu, 01 Jan 2004 19:48:21 GMT",
5+
"updatedParsed": "2004-01-01T19:48:21Z",
6+
"extensions": {
7+
"atom": {
8+
"updated": [
9+
{
10+
"name": "updated",
11+
"value": "",
12+
"parsed": {
13+
"updated": "Thu, 01 Jan 2004 19:48:21 GMT",
14+
"updatedParsed": "2004-01-01T19:48:21Z"
15+
}
16+
}
17+
]
18+
}
19+
}
20+
}
21+
],
22+
"feedType": "rss",
23+
"feedVersion": "2.0"
24+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<!--
2+
Description: item updated (atom)
3+
-->
4+
<rss version="2.0" xmlns:a10="http://www.w3.org/2005/Atom">
5+
<channel>
6+
<item>
7+
<a10:updated>Thu, 01 Jan 2004 19:48:21 GMT</a10:updated>
8+
</item>
9+
</channel>
10+
</rss>

translator.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ func (t *DefaultRSSTranslator) translateFeedItem(rssItem *rss.Item) (item *Item)
7171
item.Links = t.translateItemLinks(rssItem)
7272
item.Published = t.translateItemPublished(rssItem)
7373
item.PublishedParsed = t.translateItemPublishedParsed(rssItem)
74+
item.Updated = t.translateItemUpdated(rssItem)
75+
item.UpdatedParsed = t.translateItemUpdatedParsed(rssItem)
7476
item.Author = t.translateItemAuthor(rssItem)
7577
item.Authors = t.translateItemAuthors(rssItem)
7678
item.GUID = t.translateItemGUID(rssItem)
@@ -316,18 +318,20 @@ func (t *DefaultRSSTranslator) translateItemLinks(rssItem *rss.Item) (links []st
316318
}
317319

318320
func (t *DefaultRSSTranslator) translateItemUpdated(rssItem *rss.Item) (updated string) {
319-
if rssItem.DublinCoreExt != nil && rssItem.DublinCoreExt.Date != nil {
321+
if updatedVal, ok := t.hasAtomExtensionsForKey(rssItem, "updated"); ok {
322+
updated = t.atomTranslator.translateItemUpdated(updatedVal)
323+
} else if rssItem.DublinCoreExt != nil && rssItem.DublinCoreExt.Date != nil {
320324
updated = t.firstEntry(rssItem.DublinCoreExt.Date)
321325
}
322326
return updated
323327
}
324328

325329
func (t *DefaultRSSTranslator) translateItemUpdatedParsed(rssItem *rss.Item) (updated *time.Time) {
326-
if rssItem.DublinCoreExt != nil && rssItem.DublinCoreExt.Date != nil {
327-
updatedText := t.firstEntry(rssItem.DublinCoreExt.Date)
330+
if updatedText := t.translateItemUpdated(rssItem); updatedText != "" {
328331
updatedDate, err := shared.ParseDate(updatedText)
329332
if err == nil {
330-
updated = &updatedDate
333+
utcDate := updatedDate.UTC()
334+
updated = &utcDate
331335
}
332336
}
333337
return

0 commit comments

Comments
 (0)