From 8e5900833bfa75a6d61cde9eef53ca2fc637deb0 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Sun, 13 Sep 2020 12:28:33 +0200 Subject: [PATCH] Support multiple creator elements in RSS items --- .../assets/localfeed/rss/rss_items_other_namespaces.xml | 7 ++++++- .../com/readrops/api/localfeed/rss/RSSItemsAdapterTest.kt | 2 +- .../java/com/readrops/api/localfeed/rss/RSSItemsAdapter.kt | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/api/src/androidTest/assets/localfeed/rss/rss_items_other_namespaces.xml b/api/src/androidTest/assets/localfeed/rss/rss_items_other_namespaces.xml index cde19568..05bb2187 100644 --- a/api/src/androidTest/assets/localfeed/rss/rss_items_other_namespaces.xml +++ b/api/src/androidTest/assets/localfeed/rss/rss_items_other_namespaces.xml @@ -6,7 +6,12 @@ title link guid - + + + + + + 2020-08-05T14:03:48Z diff --git a/api/src/androidTest/java/com/readrops/api/localfeed/rss/RSSItemsAdapterTest.kt b/api/src/androidTest/java/com/readrops/api/localfeed/rss/RSSItemsAdapterTest.kt index 2358d872..7644cc24 100644 --- a/api/src/androidTest/java/com/readrops/api/localfeed/rss/RSSItemsAdapterTest.kt +++ b/api/src/androidTest/java/com/readrops/api/localfeed/rss/RSSItemsAdapterTest.kt @@ -41,7 +41,7 @@ class RSSItemsAdapterTest { val item = adapter.fromXml(stream)[0] assertEquals(item.guid, "guid") - assertEquals(item.author, "creator") + assertEquals(item.author, "creator 1") assertEquals(item.pubDate, DateUtils.stringToLocalDateTime("2020-08-05T14:03:48Z")) assertEquals(item.content, "content:encoded") } diff --git a/api/src/main/java/com/readrops/api/localfeed/rss/RSSItemsAdapter.kt b/api/src/main/java/com/readrops/api/localfeed/rss/RSSItemsAdapter.kt index 3a069b19..ea1736dd 100644 --- a/api/src/main/java/com/readrops/api/localfeed/rss/RSSItemsAdapter.kt +++ b/api/src/main/java/com/readrops/api/localfeed/rss/RSSItemsAdapter.kt @@ -18,6 +18,7 @@ class RSSItemsAdapter : XmlAdapter> { allChildrenAutoIgnore("item") { val enclosures = arrayListOf() val mediaContents = arrayListOf() + val creators = arrayListOf() val item = Item().apply { allChildrenAutoIgnore(names) { @@ -25,7 +26,7 @@ class RSSItemsAdapter : XmlAdapter> { "title" -> title = nonNullText() "link" -> link = nonNullText() "author" -> author = nullableText() - "dc:creator" -> author = nullableText() + "dc:creator" -> creators += nullableText() "pubDate" -> pubDate = DateUtils.stringToLocalDateTime(nonNullText()) "dc:date" -> pubDate = DateUtils.stringToLocalDateTime(nonNullText()) "guid" -> guid = nullableText() @@ -39,6 +40,8 @@ class RSSItemsAdapter : XmlAdapter> { validateItem(item) if (item.guid == null) item.guid = item.link + if (item.author == null && creators.filterNotNull().isNotEmpty()) + item.author = creators.filterNotNull().first() if (enclosures.isNotEmpty()) item.imageLink = enclosures.first() else if (mediaContents.isNotEmpty()) item.imageLink = mediaContents.first()