The Webfeed Flutter package for Appeto SDK.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

68 lignes
2.0 KiB

  1. import 'package:webfeed/util/xml.dart';
  2. import 'package:xml/xml.dart';
  3. import 'rss_itunes_category.dart';
  4. import 'rss_itunes_image.dart';
  5. import 'rss_itunes_owner.dart';
  6. import 'rss_itunes_type.dart';
  7. class RssItunes {
  8. final String author;
  9. final String summary;
  10. final bool explicit;
  11. final String title;
  12. final String subtitle;
  13. final RssItunesOwner owner;
  14. final List<String> keywords;
  15. final RssItunesImage image;
  16. final List<RssItunesCategory> categories;
  17. final RssItunesType type;
  18. final String newFeedUrl;
  19. final bool block;
  20. final bool complete;
  21. RssItunes({
  22. this.author,
  23. this.summary,
  24. this.explicit,
  25. this.title,
  26. this.subtitle,
  27. this.owner,
  28. this.keywords,
  29. this.image,
  30. this.categories,
  31. this.type,
  32. this.newFeedUrl,
  33. this.block,
  34. this.complete,
  35. });
  36. factory RssItunes.parse(XmlElement element) {
  37. if (element == null) {
  38. return null;
  39. }
  40. return RssItunes(
  41. author: findElementOrNull(element, 'itunes:author')?.text?.trim(),
  42. summary: findElementOrNull(element, 'itunes:summary')?.text?.trim(),
  43. explicit: parseBoolLiteral(element, 'itunes:explicit'),
  44. title: findElementOrNull(element, 'itunes:title')?.text?.trim(),
  45. subtitle: findElementOrNull(element, 'itunes:subtitle')?.text?.trim(),
  46. owner: RssItunesOwner.parse(findElementOrNull(element, 'itunes:owner')),
  47. keywords: findElementOrNull(element, 'itunes:keywords')
  48. ?.text
  49. ?.split(',')
  50. ?.map((keyword) => keyword.trim())
  51. ?.toList(),
  52. image: RssItunesImage.parse(findElementOrNull(element, 'itunes:image')),
  53. categories: findAllDirectElementsOrNull(element, 'itunes:category')
  54. .map((ele) => RssItunesCategory.parse(ele))
  55. .toList(),
  56. type: newRssItunesType(findElementOrNull(element, 'itunes:type')),
  57. newFeedUrl:
  58. findElementOrNull(element, 'itunes:new-feed-url')?.text?.trim(),
  59. block: parseBoolLiteral(element, 'itunes:block'),
  60. complete: parseBoolLiteral(element, 'itunes:complete'),
  61. );
  62. }
  63. }