getValidRequestUri function

(Uri?, String?) getValidRequestUri(
  1. String? url,
  2. List<NameValueModel>? requestParams, {
  3. SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
})

Implementation

(Uri?, String?) getValidRequestUri(
  String? url,
  List<NameValueModel>? requestParams, {
  SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
}) {
  url = url?.trim();
  if (url == null || url == "") {
    return (null, "URL is missing!");
  }

  if (kLocalhostRegex.hasMatch(url) || kIPHostRegex.hasMatch(url)) {
    url = '${SupportedUriSchemes.http.name}://$url';
  }

  Uri? uri = Uri.tryParse(url);
  if (uri == null) {
    return (null, "Check URL (malformed)");
  }
  (String?, bool) urlScheme = getUriScheme(uri);

  if (urlScheme.$1 != null) {
    if (!urlScheme.$2) {
      return (null, "Unsupported URL Scheme (${urlScheme.$1})");
    }
  } else {
    url = "${defaultUriScheme.name}://$url";
  }

  uri = Uri.parse(url);
  if (uri.hasFragment) {
    uri = uri.removeFragment();
  }

  Map<String, String>? queryParams = rowsToMap(requestParams);
  if (queryParams != null && queryParams.isNotEmpty) {
    if (uri.hasQuery) {
      Map<String, String> urlQueryParams = uri.queryParameters;
      queryParams = mergeMaps(urlQueryParams, queryParams);
    }
    uri = uri.replace(queryParameters: queryParams);
  }
  return (uri, null);
}