configure method

  1. @override
void configure(
  1. void next(
    1. HttpMessageHandlerBuilder
    ),
  2. HttpMessageHandlerBuilder builder
)
override

Applies additional configuration to the HttpMessageHandlerBuilder.

The next parameter represents the next filter in the pipeline, or the final handler building step if this is the last filter.

Filters can execute code before and after calling next:

class MyFilter extends HttpMessageHandlerBuilderFilter {
  @override
  void configure(
    void Function(HttpMessageHandlerBuilder) next,
    HttpMessageHandlerBuilder builder,
  ) {
    // Execute code before building
    print('Building handler for: ${builder.name}');

    // Call the next filter in the pipeline
    next(builder);

    // Execute code after building
    print('Handler built for: ${builder.name}');
  }
}

Implementation

@override
void configure(
  void Function(HttpMessageHandlerBuilder) next,
  HttpMessageHandlerBuilder builder,
) {
  // Call the next filter in the pipeline
  next(builder);

  // Get options for this named client
  final name = builder.name ?? Options.defaultName;
  final options = _optionsMonitor.get(name);

  // Skip logging if suppressed
  if (options.suppressDefaultLogging) {
    return;
  }

  // Create logger for this HTTP client
  final logger = _loggerFactory.createLogger(
    'System.Net.Http.HttpClient.$name.LogicalHandler',
  );

  // Add logging handler to the pipeline
  final loggingHandler = LoggingHttpMessageHandler(
    logger: logger,
    shouldRedactHeaderValue: options.shouldRedactHeaderValue,
  );

  builder.additionalHandlers.add(loggingHandler);
}