respondToSearch method

Future<List<String>> respondToSearch(
  1. String? target,
  2. Datagram pkt,
  3. Map<String, String> headers
)

Implementation

Future<List<String>> respondToSearch(
    String? target, Datagram pkt, Map<String, String> headers) async {
  final out = <String>[];

  void addDevice(String? profile) {
    final buff = StringBuffer();
    buff.write('HTTP/1.1 200 OK\r\n');
    buff.write('CACHE-CONTROL: max-age=180\r\n');
    buff.write('EXT:\r\n');
    buff.write('LOCATION: $rootDescriptionUrl\r\n');
    buff.write('SERVER: UPnP.dart/1.0\r\n');
    buff.write('ST: $profile\r\n');
    buff.write('USN: ${device.deviceType}::$profile\r\n');
    out.add(buff.toString());
  }

  if (target == 'ssdp:all') {
    addDevice(device.deviceType);

    for (UpnpHostService svc in device.services) {
      addDevice(svc.type);
    }
  } else if (target == device.deviceType || target == 'upnp:rootdevice') {
    addDevice(device.deviceType);
  } else if (target == device.udn) {
    addDevice(device.deviceType);
  }

  final svc = device.findService(target);

  if (svc != null) {
    addDevice(svc.type);
  }

  return out;
}