2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#ifndef EXPRESS_ROUTER_H
43#define EXPRESS_ROUTER_H
45#include "express/Next.h"
46#include "express/Request.h"
47#include "express/Response.h"
48#include "express/RootRoute.h"
54#ifndef DOXYGEN_SHOULD_SKIP_THIS
63#define MIDDLEWARE(req, res, next)
64 ([[maybe_unused]] const std::shared_ptr<express::Request>& req,
65 [[maybe_unused]] const std::shared_ptr<express::Response>& res,
66 [[maybe_unused]] express::Next&(next))
68#define APPLICATION(req, res)
69 ([[maybe_unused]] const std::shared_ptr<express::Request>& req, [[maybe_unused]] const std::shared_ptr<express::Response>& res)
71#define DECLARE_ROUTER_REQUESTMETHOD(METHOD)
72 Route& METHOD(const Router& router) const;
73 Route& METHOD(const std::string& relativeMountPath, const Router& router) const;
74 Route& METHOD(const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&)>& lambda) const;
75 Route& METHOD(const std::string& relativeMountPath,
76 const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&)>& lambda) const;
77 Route& METHOD(const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&, Next&)>& lambda) const;
78 Route& METHOD(const std::string& relativeMountPath,
79 const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&, Next&)>& lambda) const;
81 template <typename... Lambdas>
82 Route& METHOD(const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&)>& lambda,
83 Lambdas... lambdas) const;
84 template <typename... Lambdas>
85 Route& METHOD(const std::string& relativeMountPath,
86 const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&)>& lambda,
87 Lambdas... lambdas) const;
88 template <typename... Lambdas>
89 Route& METHOD(const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&, Next&)>& lambda,
90 Lambdas... lambdas) const;
91 template <typename... Lambdas>
92 Route& METHOD(const std::string& relativeMountPath,
93 const std::function<void(const std::shared_ptr<Request>&, const std::shared_ptr<Response>&, Next&)>& lambda,
94 Lambdas... lambdas) const;
107 std::list<std::string>
getRoutes()
const;
130#include "express/Router.hpp"
#define DECLARE_ROUTER_REQUESTMETHOD(METHOD)
#define APPLICATION(req, res)
#define MIDDLEWARE(req, res, next)
static void init(int argc, char *argv[])
static int start(const utils::Timeval &timeOut={LONG_MAX, 0})
static constexpr int DISABLED
static constexpr int ERROR
static constexpr int FATAL
Controller(const std::shared_ptr< web::http::server::Request > &request, const std::shared_ptr< web::http::server::Response > &response)
void operator()(const std::string &how="") const
std::map< std::string, std::string > params
const std::string & get(const std::string &key, int i=0) const
std::map< std::string, std::string > queries
Response & set(const std::string &field, const std::string &value, bool overwrite=true)
void send(const std::string &chunk)
Response & status(int status)
void json(const nlohmann::json &json)
Route & head(const Router &router) const
Route & all(const Router &router) const
const Router & setCaseInsensitiveRouting(bool caseInsensitiveRouting=true) const
const Router & setStrictRouting(bool strictRouting=true) const
Route & options(const Router &router) const
Route & connect(const Router &router) const
Route & post(const Router &router) const
Route & del(const Router &router) const
Router(const Router &)=default
Route & use(const Router &router) const
Route & get(const Router &router) const
Route & trace(const Router &router) const
Route & patch(const Router &router) const
const Router & setMergeParams(bool mergeParams=true) const
std::list< std::string > getRoutes() const
Route & put(const Router &router) const
std::shared_ptr< RootRoute > rootRoute
WebAppT(const std::string &name, const Router &router)
typename Server::SocketConnection SocketConnection
express::Response Response
typename Server::SocketAddress SocketAddress
WebAppT(const std::string &name)
static void init(int argc, char *argv[])
static core::TickStatus tick(const utils::Timeval &timeOut=0)
static core::State state()
static int start(const utils::Timeval &timeOut={LONG_MAX, 0})
WebApp(const Router &router)
std::string toString(bool expanded=true) const override
const Super & listen(uint16_t port, const std::function< void(const SocketAddress &, core::socket::State)> &onStatus) const
constexpr bool setAttribute(const Attribute &&attribute, const std::string &subKey="", bool overwrite=false)
bool getAttribute(const std::function< void(Attribute &)> &onFound, const std::string &subKey="") const
Timeval(const std::initializer_list< time_t > &initList) noexcept
int main(int argc, char *argv[])
std::vector< json > Trace
static void ensureTrace(const std::shared_ptr< express::Request > &req)
static void tracePush(const std::shared_ptr< express::Request > &req, const std::string &label)
static json snapshot(const std::shared_ptr< express::Request > &req, const std::string &label)
static json traceGet(const std::shared_ptr< express::Request > &req)
web::http::server::Server< net::in::stream::legacy::SocketServer > Server