magpie
Loading...
Searching...
No Matches
BaseRoute.hpp
1#pragma once
2
3#include "magpie/middlewares/Middleware.hpp"
4#include "magpie/routing/Compile.hpp"
5#include "magpie/transfer/Request.hpp"
6#include "magpie/transfer/Response.hpp"
7#include <vector>
8#include <string_view>
9
10namespace magpie::routing {
11
12template <FixedString path, data::IsCommonData ContextType>
13using RouteCallback = FunctionSignature<path, void, ContextType*, Request&, Response&>::type;
14
15template <data::IsCommonData ContextType>
16class BaseRoute {
17protected:
18 Middlewares<ContextType> middlewares;
19public:
20
21 virtual ~BaseRoute() = default;
22
23 virtual void invoke(
24 const std::vector<std::string_view>& requestedRoute,
25 ContextType* context,
26 Request& req,
27 Response& res
28 ) = 0;
29
30 virtual BaseRoute* registerMiddlewares(std::vector<std::shared_ptr<Middleware<ContextType>>>&& middlewares) {
31 this->middlewares.middlewares = std::move(middlewares);
32 return this;
33 }
34
35 virtual Middlewares<ContextType>* getMiddlewaresAsPtr() {
36 return &middlewares;
37 }
38};
39
40}
Definition Middleware.hpp:73
Definition BaseRoute.hpp:16
Definition Middleware.hpp:145
Definition Request.hpp:11
Definition Response.hpp:13