onResponse method

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

Called when the response is about to be resolved.

Implementation

@override
void onResponse(Response response, ResponseInterceptorHandler handler) {
  final requestLog = _requestLog(response.requestOptions);

  final statusCode = response.statusCode;
  final contentType = response.headers
      .value(HttpHeaders.contentTypeHeader)
      ?.split(';')
      .first;
  final contentLengthHeader = response.headers.value(
    HttpHeaders.contentLengthHeader,
  );
  final responseBodyLength =
      int.tryParse(contentLengthHeader ?? '') ??
      switch (response.data) {
        String s => s.length,
        List l => l.length,
        Map m => m.length,
        _ => null,
      };
  final cookies = response.headers[HttpHeaders.setCookieHeader]?.length;

  final responseLog = [
    statusCode,
    if (contentType case final t) t,
    if (responseBodyLength case final l?) '${_compactFormat(l)}B',
    if (cookies case final c? when c > 0) "$c cookie${c != 1 ? 's' : ''}",
  ].join(' ');

  final message = '$requestLog => $responseLog';
  log(message, name: 'HTTP');
  firebaseService.log(message);
  handler.next(response);
}