jsonRequest method

Future<Map<String, dynamic>> jsonRequest(
  1. String url, {
  2. bool followRedirects = true,
  3. Duration? timeout,
})

make a get request to the given url

Implementation

Future<Map<String, dynamic>> jsonRequest(
  String url, {
  bool followRedirects = true,
  Duration? timeout,
}) async {
  final uri = Uri.parse(url).replace(scheme: 'https');
  const headers = {"Accept": "application/json"};

  final http.Response response;
  if (followRedirects && timeout == null) {
    response = await _client.get(uri, headers: headers);
  } else {
    final abort = Completer<void>();
    final timer = timeout == null ? null : Timer(timeout, abort.complete);
    final request = http.AbortableRequest(
      'GET',
      uri,
      abortTrigger: abort.future,
    )
      ..headers.addAll(headers)
      ..followRedirects = followRedirects;
    try {
      response = await http.Response.fromStream(await _client.send(request));
    } finally {
      timer?.cancel();
    }
  }

  if (!_isSuccessStatus(response.statusCode)) {
    throw HttpRequestException(
      statusCode: response.statusCode,
      body: response.body,
      url: url,
    );
  }
  return jsonDecode(response.body);
}