onResponse method

void onResponse(
  1. Response response, {
  2. dynamic body,
})

Handles http response. It creates both request and response from http call

Implementation

void onResponse(http.Response response, {dynamic body}) {
  final request = response.request;
  if (request == null) {
    return;
  }

  final call = AliceHttpCall(request.hashCode);
  call.loading = false;
  call.client = "HttpClient (http package)";
  call.uri = request.url.toString();
  call.method = request.method;
  call.endpoint = request.url.path.isEmpty ? "/" : request.url.path;
  call.server = request.url.host;
  call.secure = request.url.scheme == "https";

  final httpRequest = AliceHttpRequest();

  if (request is http.Request) {
    httpRequest.body = body ?? request.body;
    httpRequest.size = utf8.encode(httpRequest.body.toString()).length;
    httpRequest.headers = Map<String, dynamic>.from(request.headers);
  } else if (body == null) {
    httpRequest.size = 0;
    httpRequest.body = "";
  } else {
    httpRequest.size = utf8.encode(body.toString()).length;
    httpRequest.body = body;
  }

  httpRequest.time = DateTime.now();
  httpRequest.contentType = AliceParser.getContentType(httpRequest.headers);
  httpRequest.queryParameters = request.url.queryParameters;

  final httpResponse = AliceHttpResponse();
  httpResponse.status = response.statusCode;
  httpResponse.body = response.body;

  httpResponse.size = utf8.encode(response.body).length;
  httpResponse.time = DateTime.now();
  httpResponse.headers = Map<String, String>.from(response.headers);

  call.request = httpRequest;
  call.response = httpResponse;
  call.duration = 0;
  aliceCore.addCall(call);
}