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 {
  if (req.method != 'GET') return next();

  final key = req.uri.toString();
  if (_memoryCache.containsKey(key)) {
    res.sendJson(_memoryCache[key]!);
    return;
  }

  final capturedRes = ResponseWrapper(req.raw);
  await next();

  if (capturedRes.sent && capturedRes.data != null) {
    _memoryCache[key] = capturedRes.data!;
    Future.delayed(duration, () => _memoryCache.remove(key));
  }
}