The Webfeed Flutter package for Appeto SDK.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

66 řádky
1.8 KiB

  1. import 'package:xml/xml.dart';
  2. import 'package:webfeed/util/helpers.dart';
  3. import 'rss_itunes_category.dart';
  4. import 'rss_itunes_image.dart';
  5. class RssItunes {
  6. final String author;
  7. final String summary;
  8. final bool explicit;
  9. final String subtitle;
  10. final RssItunesOwner owner;
  11. final List<String> keywords;
  12. final RssItunesImage image;
  13. final RssItunesCategory category;
  14. RssItunes({
  15. this.author,
  16. this.summary,
  17. this.explicit,
  18. this.subtitle,
  19. this.owner,
  20. this.keywords,
  21. this.image,
  22. this.category,
  23. });
  24. factory RssItunes.parse(XmlElement element) {
  25. if (element == null) {
  26. return null;
  27. }
  28. var explicitStr =
  29. findElementOrNull(element, "itunes:explicit")?.text?.toLowerCase()?.trim();
  30. return RssItunes(
  31. author: findElementOrNull(element, "itunes:author")?.text?.trim(),
  32. summary: findElementOrNull(element, "itunes:summary")?.text?.trim(),
  33. explicit: explicitStr == null
  34. ? null
  35. : explicitStr == "yes" || explicitStr == "true",
  36. subtitle: findElementOrNull(element, "itunes:subtitle")?.text?.trim(),
  37. owner: RssItunesOwner.parse(findElementOrNull(element, "itunes:owner")),
  38. keywords: findElementOrNull(element, "itunes:keywords")?.text?.split(",")?.map((keyword) => keyword.trim())?.toList(),
  39. image: RssItunesImage.parse(findElementOrNull(element, "itunes:image")),
  40. category: RssItunesCategory.parse(
  41. findElementOrNull(element, "itunes:category")),
  42. );
  43. }
  44. }
  45. class RssItunesOwner {
  46. final String name;
  47. final String email;
  48. RssItunesOwner({this.name, this.email});
  49. factory RssItunesOwner.parse(XmlElement element) {
  50. if (element == null) return null;
  51. return RssItunesOwner(
  52. name: findElementOrNull(element, "itunes:name")?.text?.trim(),
  53. email: findElementOrNull(element, "itunes:email")?.text?.trim(),
  54. );
  55. }
  56. }