handle<REQUEST, RES> method

  1. @override
Future<RES> handle<REQUEST, RES>({
  1. required REQUEST request,
  2. required RequestHandler handler,
})

Handles an HTTP request using the provided handler.

request: The HTTP request to handle. handler: The function that creates a request handler for the request. Returns a Future that completes with the response.

Implementation

@override
Future<RES> handle<REQUEST, RES>({
  required REQUEST request,
  required RequestHandler handler,
}) async {
  final context = request as RequestContext;

  final req = await Pluggable.mapper.mapAsync<RequestContext, PHttpRequest>(
    context,
  );

  final result = await handler(req).execute();

  final mapped = Pluggable.mapper.map<PHttpResponse, Response>(
    result,
  );

  return mapped.copyWith(
    headers: {
      'x-request-id': req.requestId,
      ...mapped.headers,
    },
  ) as RES;
}