The Webfeed Flutter package for Appeto SDK.
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

63 строки
1.9 KiB

  1. import 'package:webfeed/domain/dublin_core/dublin_core.dart';
  2. import 'package:webfeed/domain/media/media.dart';
  3. import 'package:webfeed/domain/rss_category.dart';
  4. import 'package:webfeed/domain/rss_content.dart';
  5. import 'package:webfeed/domain/rss_enclosure.dart';
  6. import 'package:webfeed/domain/rss_source.dart';
  7. import 'package:webfeed/util/helpers.dart';
  8. import 'package:xml/xml.dart';
  9. import 'package:webfeed/util/helpers.dart';
  10. class RssItem {
  11. final String title;
  12. final String description;
  13. final String link;
  14. final List<RssCategory> categories;
  15. final String guid;
  16. final String pubDate;
  17. final String author;
  18. final String comments;
  19. final RssSource source;
  20. final RssContent content;
  21. final Media media;
  22. final RssEnclosure enclosure;
  23. final DublinCore dc;
  24. RssItem({
  25. this.title,
  26. this.description,
  27. this.link,
  28. this.categories,
  29. this.guid,
  30. this.pubDate,
  31. this.author,
  32. this.comments,
  33. this.source,
  34. this.content,
  35. this.media,
  36. this.enclosure,
  37. this.dc,
  38. });
  39. factory RssItem.parse(XmlElement element) {
  40. return RssItem(
  41. title: findElementOrNull(element, "title")?.text,
  42. description: findElementOrNull(element, "description")?.text,
  43. link: findElementOrNull(element, "link")?.text,
  44. categories: element.findElements("category").map((element) {
  45. return RssCategory.parse(element);
  46. }).toList(),
  47. guid: findElementOrNull(element, "guid")?.text,
  48. pubDate: findElementOrNull(element, "pubDate")?.text,
  49. author: findElementOrNull(element, "author")?.text,
  50. comments: findElementOrNull(element, "comments")?.text,
  51. source: RssSource.parse(findElementOrNull(element, "source")),
  52. content: RssContent.parse(findElementOrNull(element, "content:encoded")),
  53. media: Media.parse(element),
  54. enclosure: RssEnclosure.parse(findElementOrNull(element, "enclosure")),
  55. dc: DublinCore.parse(element),
  56. );
  57. }
  58. }