handle method

Future<void> handle(
  1. Request req,
  2. ResponseContract res,
  3. NextFunction next
)

Implementation

Future<void> handle(
  Request req,
  ResponseContract res,
  NextFunction next,
) async {
  try {
    await next();
  } catch (error, stackTrace) {
    // Handle specific exception types
    final handler = Khadem.make<ExceptionHandlerContract>();
    final result = await handler.handle(error, stackTrace);

    // Send response
    res
        .status(result.statusCode)
        .problem(
          title: result.title,
          status: result.statusCode,
          detail: result.message,
          type: result.type,
          instance: result.instance,
          extensions: {
            if (result.details != null) 'details': result.details,
            if (result.stackTrace != null)
              'stack_trace': result.stackTrace.toString(),
            ...result.extensions,
          },
        );
  }
}