Router: Uses Tree and Use named Parameters

This commit is contained in:
Maurice Grönwoldt 2024-04-16 20:09:22 +02:00
commit 2bd34c2bb1
8 changed files with 139 additions and 122 deletions

View file

@ -1,22 +1,8 @@
cmake_minimum_required(VERSION 3.17)
project(VWeb_Example)
set(CMAKE_CXX_STANDARD 20)
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
find_package(VWeb 1.0 REQUIRED)
add_executable(VWeb_Example main.cpp)
include_directories(${CMAKE_SOURCE_DIR}/..)
set(mode Release)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(mode Debug)
endif ()
set(vweb_lib ${CMAKE_SOURCE_DIR}/../dist/libVWeb.${mode}.a)
SET_SOURCE_FILES_PROPERTIES(
main.cpp
PROPERTIES OBJECT_DEPENDS ${vweb_lib}
)
target_link_libraries(VWeb_Example Threads::Threads ${vweb_lib})
target_link_libraries(VWeb_Example Threads::Threads VWeb)

View file

@ -2,34 +2,35 @@
class MyCompleteController : public VWeb::Route {
public:
bool Get(const VWeb::Request&, VWeb::Response& response) {
response << "MyCompleteController: GET";
bool Get(VWeb::Request &req, VWeb::Response &response) override {
response << "MyCompleteController: GET:: \r\n\r\nParameters:\r\n\r\n";
for (auto &[key, value] : req.URLParameters) {
response << key << ": " << value << "\r\n";
}
return true;
}
bool Post(const VWeb::Request&, VWeb::Response& response) {
bool Post(VWeb::Request &, VWeb::Response &response) override {
response << "MyCompleteController: POST";
return true;
}
bool IsAllowed(const VWeb::Request& request) {
return request.HasHeader("Auth");
}
};
bool Ping(const VWeb::Request&, VWeb::Response& response) {
bool Ping(const VWeb::Request &, VWeb::Response &response) {
response << "Pong";
return true;
}
int main() {
using namespace VWeb;
VWeb::Server server;
auto& router = server.GetRouter();
auto &router = server.GetRouter();
// For debugging and profiling more than 1 thread can be hard.
server.GetServerConfig()->WorkerThreads = 1;
router->Get("/test", [](Request&, Response& response) {
router->Get("/test", [](Request &, Response &response) {
response << "NICE";
return true;
});
router->Get("/ping", &Ping);
router->Register<MyCompleteController>("/auth/:id/",
HttpMethod::GET | HttpMethod::POST);
server.Start();
server.Join();
return 0;