controlUrl function

Future<Soap?> controlUrl(
  1. String url
)

Implementation

Future<Soap?> controlUrl(String url) async {
  final uri = Uri.parse(url);
  final response = await req.getUri(uri);
  if (response.statusCode == 200) {
    final doc = XmlDocument.parse(await response.text());

    for (var service in doc.findAllElements('service')) {
      final serviceType = service.getElement('serviceType');
      if (serviceType != null) {
        final type = serviceType.text;
        if ([
          "urn:schemas-upnp-org:service:WANIPConnection:1",
          "urn:schemas-upnp-org:service:WANPPPConnection:1"
        ].contains(type)) {
          final controlUrl = service.getElement('controlURL');
          if (controlUrl != null) {
            final _urlbase = doc.getElement('URLBase');
            final urlbase = _urlbase != null ? _urlbase.text : uri.origin;
            return Soap(Uri.parse(urlbase + controlUrl.text), type);
          }
        }
      }
    }
  }
}