The Webfeed Flutter package for Appeto SDK.
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

170 satır
5.2 KiB

  1. import 'package:webfeed/domain/media/category.dart';
  2. import 'package:webfeed/domain/media/community.dart';
  3. import 'package:webfeed/domain/media/content.dart';
  4. import 'package:webfeed/domain/media/copyright.dart';
  5. import 'package:webfeed/domain/media/credit.dart';
  6. import 'package:webfeed/domain/media/description.dart';
  7. import 'package:webfeed/domain/media/embed.dart';
  8. import 'package:webfeed/domain/media/group.dart';
  9. import 'package:webfeed/domain/media/hash.dart';
  10. import 'package:webfeed/domain/media/license.dart';
  11. import 'package:webfeed/domain/media/peer_link.dart';
  12. import 'package:webfeed/domain/media/player.dart';
  13. import 'package:webfeed/domain/media/price.dart';
  14. import 'package:webfeed/domain/media/rating.dart';
  15. import 'package:webfeed/domain/media/restriction.dart';
  16. import 'package:webfeed/domain/media/rights.dart';
  17. import 'package:webfeed/domain/media/scene.dart';
  18. import 'package:webfeed/domain/media/status.dart';
  19. import 'package:webfeed/domain/media/text.dart';
  20. import 'package:webfeed/domain/media/thumbnail.dart';
  21. import 'package:webfeed/domain/media/title.dart';
  22. import 'package:webfeed/util/xml.dart';
  23. import 'package:xml/xml.dart';
  24. class Media {
  25. final Group group;
  26. final List<Content> contents;
  27. final List<Credit> credits;
  28. final Category category;
  29. final Rating rating;
  30. final Title title;
  31. final Description description;
  32. final String keywords;
  33. final List<Thumbnail> thumbnails;
  34. final Hash hash;
  35. final Player player;
  36. final Copyright copyright;
  37. final Text text;
  38. final Restriction restriction;
  39. final Community community;
  40. final List<String> comments;
  41. final Embed embed;
  42. final List<String> responses;
  43. final List<String> backLinks;
  44. final Status status;
  45. final List<Price> prices;
  46. final License license;
  47. final PeerLink peerLink;
  48. final Rights rights;
  49. final List<Scene> scenes;
  50. Media({
  51. this.group,
  52. this.contents,
  53. this.credits,
  54. this.category,
  55. this.rating,
  56. this.title,
  57. this.description,
  58. this.keywords,
  59. this.thumbnails,
  60. this.hash,
  61. this.player,
  62. this.copyright,
  63. this.text,
  64. this.restriction,
  65. this.community,
  66. this.comments,
  67. this.embed,
  68. this.responses,
  69. this.backLinks,
  70. this.status,
  71. this.prices,
  72. this.license,
  73. this.peerLink,
  74. this.rights,
  75. this.scenes,
  76. });
  77. factory Media.parse(XmlElement element) {
  78. return new Media(
  79. group: new Group.parse(
  80. findElementOrNull(element, "media:group"),
  81. ),
  82. contents: element.findElements("media:content").map((e) {
  83. return new Content.parse(e);
  84. }).toList(),
  85. credits: element.findElements("media:credit").map((e) {
  86. return new Credit.parse(e);
  87. }).toList(),
  88. category: new Category.parse(
  89. findElementOrNull(element, "media:category"),
  90. ),
  91. rating: new Rating.parse(
  92. findElementOrNull(element, "media:rating"),
  93. ),
  94. title: new Title.parse(
  95. findElementOrNull(element, "media:title"),
  96. ),
  97. description: new Description.parse(
  98. findElementOrNull(element, "media:description"),
  99. ),
  100. keywords: findElementOrNull(element, "media:keywords")?.text,
  101. thumbnails: element.findElements("media:thumbnail").map((e) {
  102. return new Thumbnail.parse(e);
  103. }).toList(),
  104. hash: new Hash.parse(
  105. findElementOrNull(element, "media:hash"),
  106. ),
  107. player: new Player.parse(
  108. findElementOrNull(element, "media:player"),
  109. ),
  110. copyright: new Copyright.parse(
  111. findElementOrNull(element, "media:copyright"),
  112. ),
  113. text: new Text.parse(
  114. findElementOrNull(element, "media:text"),
  115. ),
  116. restriction: new Restriction.parse(
  117. findElementOrNull(element, "media:restriction"),
  118. ),
  119. community: new Community.parse(
  120. findElementOrNull(element, "media:community"),
  121. ),
  122. comments: findElementOrNull(element, "media:comments")
  123. ?.findElements("media:comment")
  124. ?.map((e) {
  125. return e.text;
  126. })?.toList() ??
  127. [],
  128. embed: new Embed.parse(
  129. findElementOrNull(element, "media:embed"),
  130. ),
  131. responses: findElementOrNull(element, "media:responses")
  132. ?.findElements("media:response")
  133. ?.map((e) {
  134. return e.text;
  135. })?.toList() ??
  136. [],
  137. backLinks: findElementOrNull(element, "media:backLinks")
  138. ?.findElements("media:backLink")
  139. ?.map((e) {
  140. return e.text;
  141. })?.toList() ??
  142. [],
  143. status: new Status.parse(
  144. findElementOrNull(element, "media:status"),
  145. ),
  146. prices: element.findElements("media:price").map((e) {
  147. return new Price.parse(e);
  148. }).toList(),
  149. license: new License.parse(
  150. findElementOrNull(element, "media:license"),
  151. ),
  152. peerLink: new PeerLink.parse(
  153. findElementOrNull(element, "media:peerLink"),
  154. ),
  155. rights: new Rights.parse(
  156. findElementOrNull(element, "media:rights"),
  157. ),
  158. scenes: findElementOrNull(element, "media:scenes")
  159. ?.findElements("media:scene")
  160. ?.map((e) {
  161. return new Scene.parse(e);
  162. })?.toList() ??
  163. [],
  164. );
  165. }
  166. }