processRequest function

Future<ConvivaHttpClientRequest> processRequest({
  1. required Future<HttpClientRequest> request,
  2. Uri? uri,
})

Implementation

Future<ConvivaHttpClientRequest> processRequest(
    {required Future<HttpClientRequest> request, Uri? uri}) async {
  var requestTimestamp = DateTime.now().millisecondsSinceEpoch;
  HttpClientRequest? actualRequest;
  Map<String, dynamic>? configInfo = {};

  try {
    actualRequest = await request;
    var data = (actualRequest.headers['traceparent'] ?? "");
    String traceparent = (data is List) ? data.first : data;
    configInfo = (await ConvivaHttpOverrides.channel.invokeMethod(
            'getConfigInfo', {
      'targetUrl': actualRequest.uri.replace(queryParameters: {}).toString()
    }))
        .cast<String, dynamic>();

    if (traceparent.isEmpty && configInfo?['isTraceparentEnabled']) {
      actualRequest.headers.add("traceparent", configInfo?['traceparentId']);
    }
  } catch (exception) {
    if (actualRequest != null) {
      _processConvivaNetworkEvent(
          actualRequest, null, 0, 0, exception.toString());
    } else if (uri != null) {
      _processConvivaNetworkEventUsingUrl(
          uri, null, 0, 0, exception.toString());
    }
  }
  if (actualRequest is ConvivaHttpClientRequest) {
    return request as ConvivaHttpClientRequest;
  }
  return ConvivaHttpClientRequest(actualRequest!, requestTimestamp, configInfo);
}