extractCertSelectDomains function
Implementation
List<UserID> extractCertSelectDomains(PromptResult promptResult) {
final params = (promptResult.value as Notification).params;
final htmlStr = params!.last as String;
final domains = parseFragment(htmlStr).nodes;
final registrars = <UserID>[];
domains.retainWhere(
(Node node) {
if (node is Element &&
(node.localName == 'a' && node.className.contains('cert') ||
node.localName == 'div')) {
if (node.localName == 'div') {
final registers = parseFragment(node.innerHtml).nodes;
registers.retainWhere(
(node) =>
node is Element &&
node.localName == 'a' &&
node.className == 'select',
);
for (var element in registers) {
final keys = ['href', 'target', 'class'];
final result = element.attributes.keys.skipWhile(
(value) => keys.contains(value),
);
if (result.isEmpty) {
final domain = element.attributes['href']!;
final String domainString;
if (!domain.startsWith('/')) {
domainString = domain;
} else {
domainString = domain.substring(1);
}
final isEmpty = registrars
.where((element) => element.domain == domainString)
.isEmpty;
if (isEmpty) {
registrars.add(UserID(
domainString,
'',
false,
registered: false,
));
}
}
}
return false;
}
return true;
}
return false;
},
);
final mapped = domains.map((element) {
final title = element.attributes['title']!;
var username = (element as Element)
.innerHtml
.replaceAll('<b>', '')
.replaceAll('</b>', '');
var isActive = false;
if (username.contains(' <small>')) {
username = username.split(' ').first;
isActive = true;
}
return UserID(
title,
username,
isActive,
);
}).toList();
mapped.addAll(registrars);
return mapped;
}