cake_wallet/lib/entities/openalias_record.dart
2020-09-21 14:50:26 +03:00

62 lines
1.7 KiB
Dart

import 'package:basic_utils/basic_utils.dart';
class OpenaliasRecord {
OpenaliasRecord({this.address, this.name});
final String name;
final String address;
static String formatDomainName(String name) {
String formattedName = name;
if (name.contains("@")) {
formattedName = name.replaceAll("@", ".");
}
return formattedName;
}
static Future<OpenaliasRecord> fetchAddressAndName(String formattedName) async {
String address = formattedName;
String name = formattedName;
if (formattedName.contains(".")) {
try {
final txtRecord = await DnsUtils.lookupRecord(formattedName, RRecordType.TXT, dnssec: true);
if (txtRecord != null) {
for (RRecord element in txtRecord) {
String record = element.data;
if (record.contains("oa1:xmr") && record.contains("recipient_address")) {
record = record.replaceAll('\"', "");
final dataList = record.split(";");
address = dataList.where((item) => (item.contains("recipient_address")))
.toString().replaceAll("oa1:xmr recipient_address=", "")
.replaceAll("(", "").replaceAll(")", "").trim();
final recipientName = dataList.where((item) => (item.contains("recipient_name"))).toString()
.replaceAll("(", "").replaceAll(")", "").trim();
if (recipientName.isNotEmpty) {
name = recipientName.replaceAll("recipient_name=", "");
}
break;
}
}
}
} catch (e) {
print("${e.toString()}");
}
}
return OpenaliasRecord(address: address, name: name);
}
}