handle method
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;
}
}