1 #ifndef _YAHTTP_ROUTER_HPP
2 #define _YAHTTP_ROUTER_HPP 1
9 #define HAVE_CPP_FUNC_PTR
10 #define IGNORE std::ignore
11 namespace funcptr = std;
14 #include <boost/function.hpp>
15 #include <boost/tuple/tuple.hpp>
16 #define IGNORE boost::tuples::ignore
17 namespace funcptr = boost;
18 #define HAVE_CPP_FUNC_PTR
20 #warn "You need to configure with boost or have C++11 capable compiler for router"
24 #ifdef HAVE_CPP_FUNC_PTR
30 typedef funcptr::tuple<std::string, std::string, THandlerFunction, std::string>
TRoute;
47 void map(
const std::string& method,
const std::string& url,
THandlerFunction handler,
const std::string& name);
50 std::pair<std::string, std::string>
urlFor(
const std::string &name,
const strstr_map_t& arguments);
55 static void Map(
const std::string& method,
const std::string& url,
THandlerFunction handler,
const std::string& name =
"") {
router.
map(method, url, handler, name); };
std::map< std::string, std::string, ASCIICINullSafeComparator > strstr_map_t
Definition: utility.hpp:22
std::vector< TRoute > TRouteList
List of routes in order of evaluation.
Definition: router.hpp:31
funcptr::function< void(Request *req, Response *resp)> THandlerFunction
Handler function pointer.
Definition: router.hpp:29
static const TRouteList & GetRoutes()
Definition: router.hpp:67
static void PrintRoutes(std::ostream &os)
Definition: router.hpp:64
static void Patch(const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:59
static void Map(const std::string &method, const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:55
static void Get(const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:56
bool route(Request *req, THandlerFunction &handler)
Definition: router.cpp:27
Router()
Definition: router.hpp:44
Definition: router.hpp:42
static void Any(const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:61
Definition: reqresp.hpp:215
funcptr::tuple< std::string, std::string, THandlerFunction, std::string > TRoute
Route tuple (method, urlmask, handler, name)
Definition: router.hpp:30
void printRoutes(std::ostream &os)
Definition: router.cpp:101
static void Post(const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:57
static void Delete(const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:60
void map(const std::string &method, const std::string &url, THandlerFunction handler, const std::string &name)
Definition: router.cpp:13
static void Put(const std::string &url, THandlerFunction handler, const std::string &name="")
Definition: router.hpp:58
TRouteList routes
Definition: router.hpp:69
std::pair< std::string, std::string > urlFor(const std::string &name, const strstr_map_t &arguments)
Definition: router.cpp:120
static Router router
Definition: router.hpp:44
static std::pair< std::string, std::string > URLFor(const std::string &name, const strstr_map_t &arguments)
Definition: router.hpp:66
static bool Route(Request *req, THandlerFunction &handler)
Definition: router.hpp:63