import 'package:webfeed/util/xml.dart'; import 'package:xml/xml.dart'; import 'rss_itunes_category.dart'; import 'rss_itunes_image.dart'; import 'rss_itunes_owner.dart'; import 'rss_itunes_type.dart'; class RssItunes { final String author; final String summary; final bool explicit; final String title; final String subtitle; final RssItunesOwner owner; final List keywords; final RssItunesImage image; final List categories; final RssItunesType type; final String newFeedUrl; final bool block; final bool complete; RssItunes({ this.author, this.summary, this.explicit, this.title, this.subtitle, this.owner, this.keywords, this.image, this.categories, this.type, this.newFeedUrl, this.block, this.complete, }); factory RssItunes.parse(XmlElement element) { if (element == null) { return null; } return RssItunes( author: findElementOrNull(element, 'itunes:author')?.text?.trim(), summary: findElementOrNull(element, 'itunes:summary')?.text?.trim(), explicit: parseBoolLiteral(element, 'itunes:explicit'), title: findElementOrNull(element, 'itunes:title')?.text?.trim(), 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')), categories: findAllDirectElementsOrNull(element, 'itunes:category') .map((ele) => RssItunesCategory.parse(ele)) .toList(), type: newRssItunesType(findElementOrNull(element, 'itunes:type')), newFeedUrl: findElementOrNull(element, 'itunes:new-feed-url')?.text?.trim(), block: parseBoolLiteral(element, 'itunes:block'), complete: parseBoolLiteral(element, 'itunes:complete'), ); } }