onRequest method

  1. @override
void onRequest(
  1. RequestOptions options,
  2. RequestInterceptorHandler handler
)

Called when the request is about to be sent.

Implementation

@override
void onRequest(
    RequestOptions options, RequestInterceptorHandler handler) async {
  final builder = _LogBuilder(maxWidth);

  builder.addTitle('>>> Request │ ${options.method} │ ${options.uri}');

  if (requestHeader) {
    builder.startSection('Query parameters');
    builder.addMap(options.queryParameters);
    builder.endSection();

    builder.startSection('Headers');
    final headers = {
      'contentType': options.contentType,
      'responseType': options.responseType,
      'followRedirects': options.followRedirects,
      'connectTimeout': options.connectTimeout,
      'receiveTimeout': options.receiveTimeout,
      ...options.headers,
    };
    builder.addMap(headers);
    builder.endSection();

    builder.startSection('Extra');
    builder.addMap(options.extra);
    builder.endSection();
  }

  if (requestBody && options.method != 'GET') {
    final data = options.data;

    if (data is FormData) {
      builder.startSection('Form data │ ${data.boundary}');
      final formDataMap = {}
        ..addEntries(data.fields)
        ..addEntries(data.files);
      builder.addMap(formDataMap);
      builder.endSection();
    } else {
      builder.startSection('Body');
      builder.addBodyData(data);
      builder.endSection();
    }
  }

  loggy.log(requestLevel, builder.build());
  super.onRequest(options, handler);
}