Skip to content

Commit

Permalink
Adapt CROW_WEBSOCKET_ROUTE to accept app reference
Browse files Browse the repository at this point in the history
  • Loading branch information
soehrl authored and The-EDev committed Nov 3, 2022
1 parent 3994bf2 commit 5d43b99
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 1 deletion.
2 changes: 1 addition & 1 deletion include/crow/app.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#else
#define CROW_ROUTE(app, url) app.template route<crow::black_magic::get_parameter_tag(url)>(url)
#define CROW_BP_ROUTE(blueprint, url) blueprint.new_rule_tagged<crow::black_magic::get_parameter_tag(url)>(url)
#define CROW_WEBSOCKET_ROUTE(app, url) app.route<crow::black_magic::get_parameter_tag(url)>(url).websocket<decltype(app)>(&app)
#define CROW_WEBSOCKET_ROUTE(app, url) app.route<crow::black_magic::get_parameter_tag(url)>(url).websocket<std::remove_reference<decltype(app)>::type>(&app)
#define CROW_MIDDLEWARES(app, ...) template middlewares<typename std::remove_reference<decltype(app)>::type, __VA_ARGS__>()
#endif
#define CROW_CATCHALL_ROUTE(app) app.catchall_route()
Expand Down
1 change: 1 addition & 0 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ endif()

add_subdirectory(template)
add_subdirectory(multi_file)
add_subdirectory(external_definition)
if ("ssl" IN_LIST CROW_FEATURES)
add_subdirectory(ssl)
endif()
Expand Down
16 changes: 16 additions & 0 deletions tests/external_definition/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
project(test_external_definition)

add_executable(
${PROJECT_NAME}
main.cpp
)

target_include_directories(
${PROJECT_NAME}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
)

target_link_libraries(
${PROJECT_NAME}
PUBLIC Crow::Crow
)
23 changes: 23 additions & 0 deletions tests/external_definition/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Testing whether crow routes can be defined in an external function.
#include "crow.h"

void define_endpoints(crow::SimpleApp& app) {
CROW_ROUTE(app, "/") ([]() {
return "Hello, world!";
});
CROW_WEBSOCKET_ROUTE(app, "/ws")
.onaccept([&](const crow::request&, void**) {
return true;
})
.onopen([](crow::websocket::connection&) {})
.onclose([](crow::websocket::connection&, std::string_view) {});
}

int main()
{
crow::SimpleApp app;

define_endpoints(app);

app.port(18080).run();
}

0 comments on commit 5d43b99

Please sign in to comment.