diff --git a/lib/domain/dublin_core/dublin_core.dart b/lib/domain/dublin_core/dublin_core.dart index 5110ac8..b34890b 100644 --- a/lib/domain/dublin_core/dublin_core.dart +++ b/lib/domain/dublin_core/dublin_core.dart @@ -20,6 +20,7 @@ class DublinCore { final String? relation; final String? coverage; final String? rights; + final String? dateString; DublinCore({ this.title, @@ -39,6 +40,7 @@ class DublinCore { this.relation, this.coverage, this.rights, + this.dateString }); factory DublinCore.parse(XmlElement element) { @@ -53,6 +55,8 @@ class DublinCore { element.findElements('dc:contributor').firstOrNull?.innerText, date: parseDateTime(element.findElements('dc:date').firstOrNull?.innerText), + dateString: + element.findElements('dc:date').firstOrNull?.innerText, created: parseDateTime( element.findElements('dc:created').firstOrNull?.innerText), modified: parseDateTime( diff --git a/lib/domain/rss_item.dart b/lib/domain/rss_item.dart index abd3a22..9687ef6 100644 --- a/lib/domain/rss_item.dart +++ b/lib/domain/rss_item.dart @@ -25,6 +25,7 @@ class RssItem { final RssEnclosure? enclosure; final DublinCore? dc; final Itunes? itunes; + final String? imageUrl; RssItem({ this.title, @@ -41,9 +42,18 @@ class RssItem { this.enclosure, this.dc, this.itunes, + this.imageUrl, }); factory RssItem.parse(XmlElement element) { + final imageElement = element.findElements('image:image').firstOrNull?.innerText ?? + element + .findElements('*') + .firstWhere( + (e) => e.name.local == 'image' && e.name.prefix == 'image', + orElse: () => XmlElement(XmlName('')), + ) + .innerText; return RssItem( title: element.findElements('title').firstOrNull?.innerText, description: element.findElements('description').firstOrNull?.innerText, @@ -72,6 +82,7 @@ class RssItem { .firstOrNull, dc: DublinCore.parse(element), itunes: Itunes.parse(element), + imageUrl: imageElement.isNotEmpty ? imageElement : null, ); } } diff --git a/pubspec.yaml b/pubspec.yaml index cdafd25..3712195 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,7 +10,7 @@ environment: dependencies: xml: ^6.4.2 - intl: ^0.19.0 + intl: ^0.20.0 dev_dependencies: flutter_lints: ^4.0.0