onRequest method

  1. @override
Future<ClientRequest?> onRequest(
  1. ClientRequest request
)
override

Called before the request is sent. Return the modified request, or null to cancel the request.

Implementation

@override
Future<ClientRequest?> onRequest(ClientRequest request) async {
  if (logRequest) {
    final buffer = StringBuffer();
    buffer.writeln('┌─────────────────────────────────────────────────────');
    buffer.writeln('│ ➡️ REQUEST: ${request.method} ${request.url}');

    if (logRequestHeaders && request.headers.isNotEmpty) {
      buffer.writeln('│ Headers:');
      request.headers.forEach((key, value) {
        // Mask authorization headers for security
        final displayValue = key.toLowerCase() == 'authorization'
            ? '${value.substring(0, 10)}...'
            : value;
        buffer.writeln('│   $key: $displayValue');
      });
    }

    if (logRequestBody && request.body != null) {
      buffer.writeln('│ Body:');
      buffer.writeln('│   ${_formatBody(request.body)}');
    }

    buffer.writeln('└─────────────────────────────────────────────────────');
    _log(buffer.toString());
  }

  return request;
}