11#include <promeki/config.h>
12#if PROMEKI_ENABLE_HTTP
21PROMEKI_NAMESPACE_BEGIN
36using HttpHandlerFunc = Function<void(
const HttpRequest &request, HttpResponse &response)>;
39using HttpHandlerFuncList = ::promeki::List<HttpHandlerFunc>;
62 Function<void(
const HttpRequest &request, HttpResponse &response, Function<
void()> next)>;
65using HttpMiddlewareList = ::promeki::List<HttpMiddleware>;
96 RefCount _promeki_refct;
97 virtual HttpHandler *_promeki_clone()
const = 0;
100 using Ptr = SharedPtr<HttpHandler, false>;
102 virtual ~HttpHandler() =
default;
110 virtual void serve(
const HttpRequest &request, HttpResponse &response) = 0;
122class HttpFunctionHandler :
public HttpHandler {
123 PROMEKI_SHARED_DERIVED(HttpFunctionHandler)
129 explicit HttpFunctionHandler(HttpHandlerFunc func) : _func(std::move(func)) {}
131 void serve(
const HttpRequest &request, HttpResponse &response)
override {
132 if (_func) _func(request, response);
136 HttpHandlerFunc _func;