onRequest method

  1. @override
FutureOr<Request> onRequest(
  1. Request request
)
override

Implementation

@override
FutureOr<Request> onRequest(Request request) async {
  if (level == Level.none) return request;
  final http.BaseRequest base = await request.toBaseRequest();

  String startRequestMessage = '--> ${base.method} ${base.url.toString()}';
  String bodyMessage = '';
  if (base is http.Request) {
    if (base.body.isNotEmpty) {
      bodyMessage = base.body;

      if (!_logHeaders) {
        startRequestMessage += ' (${base.bodyBytes.length}-byte body)';
      }
    }
  }

  // Always start on a new line
  _logger.info(ChopperLogRecord('', request: request));
  _logger.info(ChopperLogRecord(startRequestMessage, request: request));

  if (_logHeaders) {
    base.headers.forEach(
      (k, v) => _logger.info(ChopperLogRecord('$k: $v', request: request)),
    );

    if (base.contentLength != null &&
        base.headers['content-length'] == null) {
      _logger.info(ChopperLogRecord(
        'content-length: ${base.contentLength}',
        request: request,
      ));
    }
  }

  if (_logBody && bodyMessage.isNotEmpty) {
    _logger.info(ChopperLogRecord('', request: request));
    _logger.info(ChopperLogRecord(bodyMessage, request: request));
  }

  if (_logHeaders || _logBody) {
    _logger.info(ChopperLogRecord(
      '--> END ${base.method}',
      request: request,
    ));
  }

  return request;
}