get method

Future<Map<String, dynamic>> get(
  1. String uri,
  2. {Map<String, dynamic>? body,
  3. Map<String, String>? headers}
)

Sets auth headers in provided headers and sends HTTP GET request to given uri with body set as encoded uri parameters.

Implementation

Future<Map<String, dynamic>> get(String uri,
    {Map<String, dynamic>? body, Map<String, String>? headers}) async {
  uri = baseUri + uri;

  headers = await _setAuthHeader(headers);

  if (body != null) {
    // list of the uri parameters to be set
    var params = [];
    for (var key in body.keys) {
      params.add('$key=${body[key]}');
    }

    uri += '?';
    uri += params.join('&');
    uri = Uri.encodeFull(uri);
  }

  log.finest('Sending GET request to URL: ' + uri);
  var response = await http.get(Uri.parse(uri), headers: headers);
  Map<String, dynamic> responseMap;

  try {
    responseMap = _decodeResponse(response);
  } on AuthException {
    log.finest('Got AuthException, reauthenticating');
    await authenticate();
    headers = await _setAuthHeader(headers);

    response = await http.get(Uri.parse(uri), headers: headers);
    responseMap = _decodeResponse(response);
  }

  return responseMap;
}