requestURL property Null safety

String requestURL

The full URL of this request.

This value is derived from baseURL, path, and query.

Implementation

String get requestURL {
  if (path == null) {
    throw StateError("TestRequest must have non-null path and baseURL.");
  }

  var actualPath = path!;
  while (actualPath.startsWith("/")) {
    actualPath = actualPath.substring(1);
  }

  var url = _baseUrl.resolve(actualPath).toString();
  if (query.isNotEmpty) {
    final pairs = <String>[];

    query.forEach((key, val) {
      if (val == null || val == true) {
        pairs.add(key);
      } else if (val is List) {
        for (final innerVal in val) {
          final urlEncoded = Uri.encodeComponent('$innerVal');
          pairs.add("$key=$urlEncoded");
        }
      } else {
        final urlEncoded = Uri.encodeComponent('$val');
        pairs.add("$key=$urlEncoded");
      }
    });

    url = "$url?${pairs.join("&")}";
  }

  return url;
}