import 'package:xml/xml.dart'; import 'package:webfeed/util/helpers.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"), ); } }