diff --git a/lib/domain/media/group.dart b/lib/domain/media/group.dart index ad584fe..2ddf642 100644 --- a/lib/domain/media/group.dart +++ b/lib/domain/media/group.dart @@ -3,6 +3,7 @@ import 'package:rss_dart/domain/media/content.dart'; import 'package:rss_dart/domain/media/credit.dart'; import 'package:rss_dart/domain/media/rating.dart'; import 'package:rss_dart/domain/media/thumbnail.dart'; +import 'package:rss_dart/domain/media/description.dart'; import 'package:rss_dart/util/helpers.dart'; import 'package:xml/xml.dart'; @@ -12,6 +13,7 @@ class Group { final List thumbnails; final Category? category; final Rating? rating; + final Description? description; const Group({ this.contents = const [], @@ -19,12 +21,14 @@ class Group { this.thumbnails = const [], this.category, this.rating, + this.description, }); static Group? parse(XmlElement? element) { if (element == null) { return null; } + return Group( contents: element .findElements('media:content') @@ -40,6 +44,9 @@ class Group { .toList(), category: Category.parse(findElementOrNull(element, 'media:category')), rating: Rating.parse(findElementOrNull(element, 'media:rating')), + description: Description.parse( + findElementOrNull(element, 'media:description'), + ), ); } } diff --git a/lib/util/helpers.dart b/lib/util/helpers.dart index cca3d68..c116008 100644 --- a/lib/util/helpers.dart +++ b/lib/util/helpers.dart @@ -8,7 +8,8 @@ XmlElement? findElementOrNull( String? namespace, }) { try { - return element.findAllElements(name, namespace: namespace).first; + return element.childElements + .firstWhere((child) => child.name.qualified == name); } on StateError { return null; } diff --git a/test/atom_test.dart b/test/atom_test.dart index a9740f7..9688e5c 100644 --- a/test/atom_test.dart +++ b/test/atom_test.dart @@ -117,6 +117,9 @@ void main() { expect(mediaGroupThumbnail.height, '50'); expect(mediaGroupThumbnail.time, '12:05:01.123'); + expect(item.media!.group!.description!.type, 'plain'); + expect(item.media!.group!.description!.value, 'Some cool stuff!'); + expect(item.media!.contents.length, 2); final mediaContent = item.media!.contents.first; expect(mediaContent.url, 'http://www.foo.com/video.mov'); diff --git a/test/xml/Atom-Media.xml b/test/xml/Atom-Media.xml index 080fc10..ee70248 100644 --- a/test/xml/Atom-Media.xml +++ b/test/xml/Atom-Media.xml @@ -51,6 +51,7 @@ music/artist name/album/song nonadult + Some cool stuff! The Judy's -- The Moo Song This was some really bizarre band I listened to as a young lad.