parseSIMSElement function
Implementation
StatelessMediaSharingData parseSIMSElement(XMLNode node) {
assert(node.attributes['xmlns'] == simsXmlns, 'Invalid element xmlns');
assert(node.tag == 'media-sharing', 'Invalid element name');
final file = node.firstTag('file', xmlns: jingleFileTransferXmlns)!;
final hashes = <String, String>{};
for (final i in file.findTags('hash', xmlns: hashXmlns)) {
hashes[i.attributes['algo']! as String] = i.innerText();
}
var url = '';
final references =
file.firstTag('sources')!.findTags('reference', xmlns: referenceXmlns);
for (final i in references) {
if (i.attributes['type'] != 'data') continue;
final uri = i.attributes['uri']! as String;
if (!uri.startsWith('https://')) continue;
url = uri;
break;
}
// Thumbnails
final thumbnails = List<JingleContentThumbnail>.empty(growable: true);
for (final i
in file.findTags('thumbnail', xmlns: jingleContentThumbnailXmlns)) {
thumbnails.add(JingleContentThumbnail.fromXML(i));
}
return StatelessMediaSharingData(
mediaType: file.firstTag('media-type')!.innerText(),
size: int.parse(file.firstTag('size')!.innerText()),
description: file.firstTag('description')!.innerText(),
url: url,
hashes: hashes,
thumbnails: thumbnails,
);
}