import 'package:xml/xml.dart'; import 'package:webfeed/util/helpers.dart'; import 'rss_itunes_category.dart'; import 'rss_itunes_image.dart'; class RssItunes { final String author; final String summary; final bool explicit; final String subtitle; final RssItunesOwner owner; final List keywords; final RssItunesImage image; final RssItunesCategory category; RssItunes({ this.author, this.summary, this.explicit, this.subtitle, this.owner, this.keywords, this.image, this.category, }); factory RssItunes.parse(XmlElement element) { if (element == null) { return null; } var explicitStr = findElementOrNull(element, "itunes:explicit")?.text?.toLowerCase()?.trim(); return RssItunes( author: findElementOrNull(element, "itunes:author")?.text?.trim(), summary: findElementOrNull(element, "itunes:summary")?.text?.trim(), explicit: explicitStr == null ? null : explicitStr == "yes" || explicitStr == "true", subtitle: findElementOrNull(element, "itunes:subtitle")?.text?.trim(), owner: RssItunesOwner.parse(findElementOrNull(element, "itunes:owner")), keywords: findElementOrNull(element, "itunes:keywords")?.text?.split(",")?.map((keyword) => keyword.trim())?.toList(), image: RssItunesImage.parse(findElementOrNull(element, "itunes:image")), category: RssItunesCategory.parse( findElementOrNull(element, "itunes:category")), ); } } class RssItunesOwner { final String name; final String email; RssItunesOwner({this.name, this.email}); factory RssItunesOwner.parse(XmlElement element) { if (element == null) return null; return RssItunesOwner( name: findElementOrNull(element, "itunes:name")?.text?.trim(), email: findElementOrNull(element, "itunes:email")?.text?.trim(), ); } }