handle method

  1. @override
Future<void> handle(
  1. Request req
)
override

Implementation

@override
Future<void> handle(Request req) async {
  if (bypassInDevelopment &&
      env<String>('APP_ENV', 'development') == 'development') {
    return;
  }

  final String identifier = await _getRequestIdentifier(req);
  final remaining = _throttle.remainingAttempts(identifier);

  _addRateLimitHeaders(req.response, remaining);

  if (!_throttle.request(identifier)) {
    final retryAfter = _throttle.retryAfter(identifier);
    throw ThrottleException(
      message: customMessage ?? 'Too Many Requests. Please try again later.',
      code: HttpStatus.tooManyRequests,
      headers: {
        'Retry-After': retryAfter.inSeconds.toString(),
        ...?headers,
      },
    );
  }
}