MediaContent.fromXml constructor

MediaContent.fromXml(
  1. UniversalFeed uf,
  2. XmlElement node
)

Creates a new MediaContent object from an XmlElement

Implementation

factory MediaContent.fromXml(UniversalFeed uf, XmlElement node) {
  final nsUrl = uf.meta.extensions.nsUrl(nsMediaNs);
  final mc = MediaContent(node.getAttribute('url') ?? '')
    ..fileSize = node.getAttribute('fileSize')
    ..type = node.getAttribute('type')
    ..medium = node.getAttribute('medium')
    ..isDefault = node.getAttribute('isDefault')
    ..expression = node.getAttribute('expression')
    ..bitrate = node.getAttribute('bitrate')
    ..framerate = node.getAttribute('framerate')
    ..samplingrate = node.getAttribute('samplingrate')
    ..channels = node.getAttribute('channels')
    ..duration = node.getAttribute('duration')
    ..height = node.getAttribute('height')
    ..width = node.getAttribute('width')
    ..lang = node.getAttribute('lang');

  getElements<XmlElement>(
    node,
    'rating',
    ns: nsUrl,
    cb: (xml) => mc.rating.add(Rating.fromXml(xml)),
  );

  getElement<XmlElement>(node, 'title', ns: nsUrl, cb: (value) => mc.title = textDecoder('plain', value));
  getElement<XmlElement>(node, 'description', ns: nsUrl, cb: (value) => mc.description = textDecoder('plain', value));
  getElements<XmlElement>(
    node,
    'keywords',
    ns: nsUrl,
    cb: (xml) {
      final categories = Category.loadTags(xml, defaultScheme: 'keyword');
      if (categories != null) mc.categories.addAll(categories);
    },
  );

  getElements<XmlElement>(
    node,
    'category',
    ns: nsUrl,
    cb: (xml) {
      final category = Category.fromXml(xml);
      if (category != null) mc.categories.add(category);
    },
  );

  getElements<XmlElement>(
    node,
    'thumbnail',
    ns: nsUrl,
    cb: (xml) => mc.thumbnails.add(Image.fromXmlAttributes(xml)),
  );

  getElement<XmlElement>(node, 'player', ns: nsUrl, cb: (value) => mc.player = Player.fromXml(value));

  getElement<XmlElement>(
    node,
    'credit',
    ns: nsUrl,
    cb: (xml) => mc.credits.add(Credit.fromXml(xml)),
  );

  return mc;
}