fetchControlUrls function
Implementation
Future<List<String?>> fetchControlUrls(String descriptionUrl) async {
final output = <String?>[null, null];
try {
final client = HttpClient();
final request = await client.getUrl(Uri.parse(descriptionUrl));
final response = await request.close();
if (response.statusCode != 200) return [];
final body = await response.transform(utf8.decoder).join();
final document = XmlDocument.parse(body);
final services = document.findAllElements('service');
for (final service in services) {
final serviceType = service.getElement('serviceType')?.value ?? '';
final controlUrl = service.getElement('controlURL')?.value;
if (controlUrl != null && controlUrl.isNotEmpty) {
final uri = Uri.parse(descriptionUrl);
if (serviceType.contains('AVTransport')) {
output[0] = uri.resolve(controlUrl).toString();
}
if (serviceType.contains('RenderingControl')) {
output[1] = uri.resolve(controlUrl).toString();
}
}
}
} catch (e) {
print('[DLNA] fetchControlUrls error: $e');
}
return output;
}