toRootXml method
XmlNode
toRootXml(
{ - String? urlBase,
})
Implementation
XmlNode toRootXml({String? urlBase}) {
final x = XmlBuilder();
x.element('root', nest: () {
x.namespace('urn:schemas-upnp-org:device-1-0');
x.element('specVersion', nest: () {
x.element('major', nest: '1');
x.element('minor', nest: '0');
});
if (urlBase != null) {
x.element('URLBase', nest: urlBase);
}
x.element('device', nest: () {
if (deviceType != null) {
x.element('deviceType', nest: deviceType);
}
if (friendlyName != null) {
x.element('friendlyName', nest: friendlyName);
}
if (manufacturer != null) {
x.element('manufacturer', nest: manufacturer);
}
if (manufacturerUrl != null) {
x.element('manufacturerURL', nest: manufacturerUrl);
}
if (modelName != null) {
x.element('modelName', nest: modelName);
}
if (modelDescription != null) {
x.element('modelDescription', nest: modelDescription);
}
if (modelNumber != null) {
x.element('modelNumber', nest: modelNumber);
}
if (modelUrl != null) {
x.element('modelURL', nest: modelUrl);
}
if (serialNumber != null) {
x.element('serialNumber', nest: serialNumber);
}
if (udn != null) {
x.element('UDN', nest: udn);
}
if (presentationUrl != null) {
x.element('presentationURL', nest: presentationUrl);
}
if (icons.isNotEmpty) {
x.element('iconList', nest: () {
for (UpnpHostIcon icon in icons) {
icon.applyToXml(x);
}
});
}
x.element('serviceList', nest: () {
for (var service in services) {
x.element('service', nest: () {
final svcName =
service.simpleName ?? Uri.encodeComponent(service.id!);
x.element('serviceType', nest: service.type);
x.element('serviceId', nest: service.id);
x.element('controlURL', nest: '/upnp/control/$svcName');
x.element('eventSubURL', nest: '/upnp/events/$svcName');
x.element('SCPDURL', nest: '/upnp/services/$svcName.xml');
});
}
});
});
});
return x.buildDocument();
}