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.

66 lignes
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. }