getNodesAddressesByAddress method

List<String> getNodesAddressesByAddress(
  1. String address
)

Implementation

List<String> getNodesAddressesByAddress(String address) {
  List<String> result = [];

  XchgNetworkRange? preferredRange;
  int preferredRangeScore = 0;

  if (address.startsWith("#")) {
    address = address.substring(1);
  }

  var addressHex =
      base32.decodeAsHexString(address.toUpperCase()).toLowerCase();
  for (var range in ranges) {
    int rangeScore = 0;
    for (int i = 0; i < addressHex.length && i < range.prefix.length; i++) {
      if (addressHex[i] == range.prefix[i]) {
        rangeScore++;
      }
    }
    if (rangeScore > preferredRangeScore) {
      preferredRange = range;
      preferredRangeScore = rangeScore;
    }
  }

  if (preferredRange != null) {
    for (var host in preferredRange.hosts) {
      result.add(host.address);
    }
  }

  return result;
}