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 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); } }