onResponse method

  1. @override
void onResponse(
  1. Response response,
  2. ResponseInterceptorHandler handler
)

Called when the response is about to be resolved.

Implementation

@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
  if (ApiLogger.instance.isLogEnabled == true) {
    try {
      RequestModel? requestModel;
      requestModel =
          ApiLogger.instance.getRequestModel(response.requestOptions);
      requestModel?.response = response.data;
      requestModel?.endTime = DateTime.now().millisecondsSinceEpoch;
      requestModel?.responseHeader = response.headers.map;
      requestModel?.requestContentLength = int.tryParse(
          response.requestOptions.headers['content-length']?.toString() ??
              '');
      requestModel?.responseContentLength = int.tryParse(
          response.headers['content-length']?.firstOrNull?.toString() ?? '');
      requestModel?.httpCode = response.statusCode;
      if (isNotNullOrEmpty(requestModel)) {
        ApiLogger.instance.completeRequest(requestModel!);
      }
      final mockApi = ApiLogger.instance
          .getMockApi(response.requestOptions.uri.toString());
      if (mockApi?.type == MockType.response) {
        response.data = mockApi?.mockResponse;
        response.statusCode = 200;
      }
    } catch (e, stack) {
      Completer().completeError(e, stack);
    } finally {
      ApiLogger.instance.removeRequestModel(response.requestOptions);
    }
  }
  return handler.next(response);
}