handle method

Future<Response> handle(
  1. Request request
)

Handle a request and return a response

Implementation

Future<Response> handle(Request request) async {
  if (_handler == null) {
    return Response.internalServerError(
      body: 'No handler registered',
    );
  }

  // Trigger request start hooks
  TelemetryHooks.triggerRequest(request);

  // Track response time
  final startTime = DateTime.now();

  try {
    final response = await _handler!(request);

    // Calculate duration
    final duration = DateTime.now().difference(startTime);

    // Trigger response complete hooks
    TelemetryHooks.triggerResponse(response, duration);

    return response;
  } catch (error) {
    // Calculate duration even for errors
    final duration = DateTime.now().difference(startTime);

    // Trigger response complete hooks for error responses
    final errorResponse = Response.internalServerError(
      body: 'Internal Server Error',
    );
    TelemetryHooks.triggerResponse(errorResponse, duration);

    rethrow;
  }
}