ls method
Implementation
Future<List> ls() async {
var n = 0;
List li = [];
while (true) {
final r = await get('GetGenericPortMappingEntry',
"<NewPortMappingIndex>${n++}</NewPortMappingIndex>");
final statusCode = r.statusCode;
if (500 == statusCode || 200 == statusCode) {
final xml = XmlDocument.parse(await r.text());
if (200 == statusCode) {
final meta = xml
.getElement('s:Envelope')
?.getElement('s:Body')
?.getElement('u:GetGenericPortMappingEntryResponse');
if (meta != null) {
final map = [];
for (var i in [
"NewExternalPort",
"NewInternalPort",
"NewEnabled",
"NewLeaseDuration",
]) {
map.add(int.parse(meta.getElement(i)!.text));
}
for (var i in [
"NewProtocol",
"NewRemoteHost",
"NewInternalClient",
"NewPortMappingDescription",
]) {
map.add(meta.getElement(i)?.text ?? '');
}
li.add(map);
}
continue;
} else {
if (xml.findAllElements('errorCode').first.text == '713') {
break;
}
}
}
stderr.write("\n⚠️ $statusCode\n${await r.text()}\n");
}
return li;
}