parseMultiaddrString function

FullAddress? parseMultiaddrString(
  1. String multiaddrString
)

Helper function to parse a multiaddr string into a FullAddress.

Implementation

FullAddress? parseMultiaddrString(String multiaddrString) {
  try {
    // Basic support for /ip4/<ip>/tcp/<port> or /ip6/<ip>/tcp/<port>
    final parts = multiaddrString.split('/');
    if (parts.length < 5) return null;

    final protocol = parts[1];
    final host = parts[2];
    final transport = parts[3];
    final portStr = parts[4];

    if (protocol != 'ip4' && protocol != 'ip6') return null;
    if (transport != 'tcp' && transport != 'udp') return null;

    // Basic IP validation
    if (protocol == 'ip4') {
      final ipParts = host.split('.');
      if (ipParts.length != 4) return null;
      for (final part in ipParts) {
        final val = int.tryParse(part);
        if (val == null || val < 0 || val > 255) return null;
      }
    } else if (protocol == 'ip6') {
      if (!host.contains(':') && host != '::1') return null;
      // Simple validation for IPv6
    }

    final port = int.tryParse(portStr);
    if (port == null || port <= 0 || port > 65535) return null;

    return FullAddress(address: host, port: port);
  } catch (e) {
    return null;
  }
}