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.

82 lignes
2.6 KiB

  1. import 'package:webfeed/domain/atom_category.dart';
  2. import 'package:webfeed/domain/atom_generator.dart';
  3. import 'package:webfeed/domain/atom_item.dart';
  4. import 'package:webfeed/domain/atom_link.dart';
  5. import 'package:webfeed/domain/atom_person.dart';
  6. import 'package:xml/xml.dart';
  7. import 'package:webfeed/util/helpers.dart';
  8. class AtomFeed {
  9. String id;
  10. String title;
  11. String updated;
  12. List<AtomItem> items;
  13. List<AtomLink> links;
  14. List<AtomPerson> authors;
  15. List<AtomPerson> contributors;
  16. List<AtomCategory> categories;
  17. AtomGenerator generator;
  18. String icon;
  19. String logo;
  20. String rights;
  21. String subtitle;
  22. AtomFeed(this.id, this.title, this.updated, this.items,
  23. {this.links, this.authors, this.contributors, this.categories, this.generator, this.icon, this.logo, this.rights, this.subtitle});
  24. factory AtomFeed.parse(String xmlString) {
  25. var document = parse(xmlString);
  26. XmlElement feedElement;
  27. try {
  28. feedElement = document.findElements("feed").first;
  29. } on StateError {
  30. throw new ArgumentError("feed not found");
  31. }
  32. var id = xmlGetString(feedElement, "id");
  33. var title = xmlGetString(feedElement, "title");
  34. var updated = xmlGetString(feedElement, "updated");
  35. var items = feedElement.findElements("entry").map((element) {
  36. return new AtomItem.parse(element);
  37. }).toList();
  38. var links = feedElement.findElements("link").map((element) {
  39. return new AtomLink.parse(element);
  40. }).toList();
  41. var authors = feedElement.findElements("author").map((element) {
  42. return new AtomPerson.parse(element);
  43. }).toList();
  44. var contributors = feedElement.findElements("contributor").map((element) {
  45. return new AtomPerson.parse(element);
  46. }).toList();
  47. var categories = feedElement.findElements("category").map((element) {
  48. return new AtomCategory.parse(element);
  49. }).toList();
  50. AtomGenerator generator;
  51. try {
  52. generator = new AtomGenerator.parse(feedElement.findElements("generator").first);
  53. } on StateError {}
  54. var icon = xmlGetString(feedElement, "icon", strict: false);
  55. var logo = xmlGetString(feedElement, "logo", strict: false);
  56. var rights = xmlGetString(feedElement, "rights", strict: false);
  57. var subtitle = xmlGetString(feedElement, "subtitle", strict: false);
  58. return new AtomFeed(id, title, updated, items,
  59. links: links,
  60. authors: authors,
  61. contributors: contributors,
  62. categories: categories,
  63. generator: generator,
  64. icon: icon,
  65. logo: logo,
  66. rights: rights,
  67. subtitle: subtitle);
  68. }
  69. }