3#include <unordered_map>
25 RateLimiter(
size_t max_requests, std::chrono::seconds window);
40 std::chrono::steady_clock::time_point last_refill;
44 std::chrono::seconds window_;
45 std::unordered_map<std::string, Bucket> buckets_;
57inline auto rate_limit(
size_t max_requests, std::chrono::seconds window) {
58 return [limiter = std::make_shared<RateLimiter>(max_requests, window)](
http::HttpRequest& req, std::shared_ptr<http::ResponseWriter> writer) ->
bool {
59 return (*limiter)(req, writer);
Middleware for in-memory rate limiting.
Definition RateLimiter.hpp:17
bool operator()(http::HttpRequest &req, std::shared_ptr< http::ResponseWriter > writer)
Middleware execution operator.
Definition RateLimiter.cpp:9
auto rate_limit(size_t max_requests, std::chrono::seconds window)
Helper function to easily register rate limiting middleware.
Definition RateLimiter.hpp:57
Definition Compress.hpp:4
Represents an incoming HTTP request.
Definition HttpRequest.hpp:22