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#include "net/config/ConfigSection.h"
44#ifndef DOXYGEN_SHOULD_SKIP_THIS
47#pragma GCC diagnostic push
48#pragma GCC diagnostic ignored "-Wfloat-equal"
50#if __has_warning
("-Wweak-vtables")
51#pragma GCC diagnostic ignored "-Wweak-vtables"
53#if __has_warning
("-Wcovered-switch-default")
54#pragma GCC diagnostic ignored "-Wcovered-switch-default"
56#if __has_warning
("-Wmissing-noreturn")
57#pragma GCC diagnostic ignored "-Wmissing-noreturn"
59#if __has_warning
("-Wnrvo")
60#pragma GCC diagnostic ignored "-Wnrvo"
64#include "utils/CLI11.hpp"
66#pragma GCC diagnostic pop
73 template <
typename ValueType>
75 ConfigSection::
addOption(
const std::string& name,
const std::string& description,
const std::string& typeName, ValueType defaultValue) {
76 return addOption(name, description, typeName)
77 ->default_val(defaultValue);
80 template <
typename ValueType>
82 const std::string& description,
83 const std::string& typeName,
84 ValueType defaultValue,
85 const CLI::Validator& additionalValidator) {
86 return addOption(name, description, typeName, defaultValue)
87 ->check(additionalValidator);
90 template <
typename ValueType>
92 ConfigSection::
addFlag(
const std::string& name,
const std::string& description,
const std::string& typeName, ValueType defaultValue) {
93 return addFlag(name, description, typeName)
94 ->default_val(defaultValue);
97 template <
typename ValueType>
99 const std::string& description,
100 const std::string& typeName,
101 ValueType defaultValue,
102 const CLI::Validator& additionalValidator) {
103 return addFlag(name, description, typeName, defaultValue)
104 ->check(additionalValidator);
#define DECLARE_ROOTROUTE_REQUESTMETHOD(METHOD)
#define DECLARE_ROUTE_REQUESTMETHOD(METHOD)
#define DEFINE_ROUTE_TEMPLATE_REQUESTMETHOD(METHOD, HTTP_METHOD)
#define DECLARE_ROUTER_REQUESTMETHOD(METHOD)
#define DEFINE_ROUTER_TEMPLATE_REQUESTMETHOD(METHOD, HTTP_METHOD)
bool caseInsensitiveRouting
const std::shared_ptr< Request > & getRequest()
bool setStrictRouting(bool strictRouting)
Controller(const std::shared_ptr< web::http::server::Request > &request, const std::shared_ptr< web::http::server::Response > &response)
bool getStrictRouting() const
bool setCaseInsensitiveRouting(bool caseInsensitiveRouting)
std::shared_ptr< Response > response
Controller(const Controller &controller)
void setCurrentRoute(Route *currentRoute)
void setRootRoute(RootRoute *rootRoute)
bool getCaseInsensitiveRouting() const
std::shared_ptr< Request > request
Controller & operator=(const Controller &controller) noexcept
const std::shared_ptr< Response > & getResponse()
Next(Controller &controller)
web::http::CiStringMap< std::string > cookies
Request(Request &&) noexcept=delete
Request & operator=(Request &&) noexcept=delete
std::map< std::string, std::string > params
web::http::CiStringMap< std::string > queries
Request(const std::shared_ptr< web::http::server::Request > &request) noexcept
std::shared_ptr< web::http::server::Request > requestBase
Request(Request &)=delete
web::http::CiStringMap< std::string > headers
web::http::CiStringMap< std::string > trailer
Request & operator=(Request &)=delete
std::shared_ptr< web::http::server::Response > responseBase
Response(Response &&) noexcept=delete
Response & operator=(Response &&) noexcept=delete
Response & sendFragment(const char *chunk, std::size_t chunkLen)
Response(const std::shared_ptr< web::http::server::Response > &response) noexcept
Response & status(int status)
Response(Response &)=delete
void send(const char *chunk, std::size_t chunkLen)
Response & operator=(Response &)=delete
web::http::server::SocketContext * getSocketContext() const
bool setCaseInsensitiveRouting(bool caseInsensitiveRouting)
void dispatch(Controller &&controller)
void dispatch(Controller &controller)
bool setStrictRouting(bool strictRouting)
std::list< std::string > getRoutes() const
std::list< Route > & routes() const
std::shared_ptr< dispatcher::RouterDispatcher > getDispatcher() const
Route & patch(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
StrictRouting strictRouting
std::shared_ptr< Dispatcher > dispatcher
Route & put(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & head(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & use(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & connect(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
bool dispatch(Controller &controller)
Route & options(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & setStrictRouting(bool strict=true)
Route & all(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & del(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & get(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
Route & post(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
const StrictRouting & getStrictRouting() const
Route & trace(const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &lambda) const
const Router & setCaseInsensitiveRouting(bool caseInsensitiveRouting=true) const
const Router & setStrictRouting(bool strictRouting=true) const
Router(const Router &)=default
std::list< std::string > getRoutes() const
std::shared_ptr< RootRoute > rootRoute
std::map< std::string, web::http::CookieOptions > stdCookies
StaticMiddleware & setIndex(const std::string &index)
StaticMiddleware & appendStdHeaders(const std::string &field, const std::string &value)
web::http::ConnectionState defaultConnectionState
StaticMiddleware & clearStdHeaders()
StaticMiddleware(const StaticMiddleware &)=delete
std::map< std::string, std::string > stdHeaders
StaticMiddleware & setStdHeaders(const std::map< std::string, std::string > &stdHeaders)
StaticMiddleware & operator=(const StaticMiddleware &)=delete
static class StaticMiddleware & instance(const std::string &root)
StaticMiddleware & appendStdCookie(const std::string &name, const std::string &value, const std::map< std::string, std::string > &options={})
StaticMiddleware & appendStdHeaders(const std::map< std::string, std::string > &stdHeaders)
StaticMiddleware(const std::string &root)
StaticMiddleware & afterResponse(web::http::ConnectionState connectionState)
VerboseRequest & operator=(const VerboseRequest &)=delete
VerboseRequest(Details details)
VerboseRequest(const VerboseRequest &)=delete
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName, ValueType defaultValue)
CLI::Option * addFlag(const std::string &name, const std::string &description, const std::string &typeName, ValueType defaultValue, const CLI::Validator &additionalValidator)
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, ValueType defaultValue)
CLI::Option * addOption(const std::string &name, const std::string &description, const std::string &typeName, ValueType defaultValue, const CLI::Validator &additionalValidator)
void required(CLI::Option *opt, bool req=true)
constexpr AttributeProxy(const Attribute &attribute)
constexpr Attribute & operator*()
std::map< std::string, std::shared_ptr< void > > attributes
std::string attributeType
constexpr bool setAttribute(const Attribute &attribute, bool overwrite=false)
constexpr bool setAttribute(const Attribute &&attribute, bool overwrite=false)
std::shared_ptr< void > attribute
constexpr bool getAttribute(const std::function< void(Attribute &)> &onFound) const
int main(int argc, char *argv[])
static express::Router getRouter()
static WebApp getWebApp(const std::string &name)
static WebApp getWebApp(const std::string &name)
fixed_string(char const (&)[N]) -> fixed_string< N - 1 >
std::string relativeMountPath
auto operator<=>(const fixed_string &) const =default
constexpr fixed_string(char const *s)
constexpr operator char const *() const