runCleaner function

String runCleaner(
  1. String url,
  2. Cleaner? cleaner
)

Implementation

String runCleaner(String url, Cleaner? cleaner) {
  //Amazon sponsored URLs
  if (url.contains("picassoRedirect.html")) {
    Uri parsed = Uri.parse(url);
    if (parsed.queryParameters.containsKey('url')) {
      url = "${parsed.origin}${parsed.queryParameters['url']}";
    }
  }

  //Set variables
  Uri og = Uri.parse(url);
  Map<String, String> params = {};

  //Empty cleaner, return path only, no params!
  if (cleaner == null) {
    return Uri.https(og.authority, og.path).toString();
  }

  //Blacklisted params! Add all other params.
  if (cleaner.blacklistParams != null) {
    og.queryParameters.forEach((key, value) {
      if (!cleaner.blacklistParams!.contains(key)) {
        params[key] = value;
      }
    });
  } else {
    params.addAll(og.queryParameters);
  }

  //Let's remove non-whitelisted params
  if (cleaner.whitelistParams != null) {
    List<String> toRemove = [];
    params.forEach((key, value) {
      if (!cleaner.whitelistParams!.contains(key)) {
        toRemove.add(key);
      }
    });
    params.removeWhere((k, v) => toRemove.contains(k));
  } else {
    params.clear();
  }

  //Let's append defined parameters
  if (cleaner.appendParams != null) {
    cleaner.appendParams!.forEach((key, value) {
      params[key] = value;
    });
  }

  return Uri.https(og.authority, og.path, params).toString();
}