Skip to content

Commit e3e9c33

Browse files
committed
#151: Support for atom update date
1 parent a24a6ed commit e3e9c33

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)
@@ -318,18 +320,20 @@ func (t *DefaultRSSTranslator) translateItemLinks(rssItem *rss.Item) (links []st
318320
}
319321

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

327331
func (t *DefaultRSSTranslator) translateItemUpdatedParsed(rssItem *rss.Item) (updated *time.Time) {
328-
if rssItem.DublinCoreExt != nil && rssItem.DublinCoreExt.Date != nil {
329-
updatedText := t.firstEntry(rssItem.DublinCoreExt.Date)
332+
if updatedText := t.translateItemUpdated(rssItem); updatedText != "" {
330333
updatedDate, err := shared.ParseDate(updatedText)
331334
if err == nil {
332-
updated = &updatedDate
335+
utcDate := updatedDate.UTC()
336+
updated = &utcDate
333337
}
334338
}
335339
return

0 commit comments

Comments
 (0)