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

74 строки
2.0 KiB

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