parseUri static method

URIParseResult parseUri(
  1. Uri uri
)

---- URI HANDLING --- ///

Implementation

static URIParseResult parseUri(Uri uri) {
  String protocol = uri.scheme;
  String path = uri.path;
  final List<String> splitParams = path.split('@');
  if (splitParams.length == 1) {
    throw WalletConnectError(
      code: 0,
      message: 'Invalid URI: Missing @',
    );
  }
  List<String> methods = (uri.queryParameters['methods'] ?? '')
      // Replace all the square brackets with empty string, split by comma
      .replaceAll(
        RegExp(r'[\[\]"]+'),
        '',
      )
      .split(
        ',',
      );
  if (methods.length == 1 && methods[0].isEmpty) {
    methods = [];
  }
  URIParseResult ret = URIParseResult(
    protocol: protocol,
    version: splitParams[1],
    topic: splitParams[0],
    symKey: uri.queryParameters['symKey']!,
    relay: Relay(
      uri.queryParameters['relay-protocol']!,
      data: uri.queryParameters.containsKey('relay-data')
          ? uri.queryParameters['relay-data']
          : null,
    ),
    methods: methods,
  );
  // print(ret);
  return ret;
}