aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorAntony Woods <acron1@gmail.com>2014-10-24 09:40:09 +0100
committerAntony Woods <acron1@gmail.com>2014-10-24 09:40:09 +0100
commit693aac108de4dc62811b9a2737d895ada474cfb2 (patch)
tree44cc722afea8b6ef26095cd27aa64b97ec48d74e /examples
parent27bf11d35c8ce44fd9fef656e2975712846b9bb2 (diff)
parent4b3b8070e75ce0fc181e5c012c47da2a1e7a918e (diff)
downloadcrow-693aac108de4dc62811b9a2737d895ada474cfb2.tar.gz
crow-693aac108de4dc62811b9a2737d895ada474cfb2.zip
Post-pull commit
Diffstat (limited to 'examples')
-rw-r--r--examples/CMakeLists.txt4
-rw-r--r--examples/example.cpp19
-rw-r--r--examples/example_with_all.cpp94
3 files changed, 116 insertions, 1 deletions
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 2d449e4..1fcec94 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -9,6 +9,10 @@ if (Tcmalloc_FOUND)
target_link_libraries(example ${Tcmalloc_LIBRARIES})
endif(Tcmalloc_FOUND)
+add_executable(example_with_all example_with_all.cpp)
+#target_link_libraries(example crow)
+target_link_libraries(example_with_all ${Boost_LIBRARIES} )
+
add_custom_command(OUTPUT example_test.py
COMMAND ${CMAKE_COMMAND} -E
copy ${PROJECT_SOURCE_DIR}/example_test.py ${CMAKE_CURRENT_BINARY_DIR}/example_test.py
diff --git a/examples/example.cpp b/examples/example.cpp
index 48b381c..686e823 100644
--- a/examples/example.cpp
+++ b/examples/example.cpp
@@ -5,7 +5,7 @@
class ExampleLogHandler : public crow::ILogHandler {
public:
- void log(string message, crow::LogLevel level) override {
+ void log(std::string message, crow::LogLevel level) override {
// cerr << "ExampleLogHandler -> " << message;
}
};
@@ -99,6 +99,23 @@ int main()
return crow::response{os.str()};
});
+ CROW_ROUTE(app, "/params")
+ ([](const crow::request& req){
+ std::ostringstream os;
+ os << "Params: " << req.url_params << "\n\n";
+ os << "The key 'foo' was " << (req.url_params.get("foo") == nullptr ? "not " : "") << "found.\n";
+ if(req.url_params.get("pew") != nullptr) {
+ double countD = boost::lexical_cast<double>(req.url_params.get("pew"));
+ os << "The value of 'pew' is " << countD << '\n';
+ }
+ auto count = req.url_params.get_list("count");
+ os << "The key 'count' contains " << count.size() << " value(s).\n";
+ for(const auto& countVal : count) {
+ os << " - " << countVal << '\n';
+ }
+ return crow::response{os.str()};
+ });
+
// ignore all log
crow::logger::setLogLevel(crow::LogLevel::DEBUG);
//crow::logger::setHandler(std::make_shared<ExampleLogHandler>());
diff --git a/examples/example_with_all.cpp b/examples/example_with_all.cpp
new file mode 100644
index 0000000..55e2715
--- /dev/null
+++ b/examples/example_with_all.cpp
@@ -0,0 +1,94 @@
+#include "../amalgamate/crow_all.h"
+
+#include <sstream>
+
+class ExampleLogHandler : public crow::ILogHandler {
+ public:
+ void log(std::string message, crow::LogLevel level) override {
+// cerr << "ExampleLogHandler -> " << message;
+ }
+};
+
+int main()
+{
+ crow::SimpleApp app;
+
+ CROW_ROUTE(app, "/")
+ .name("hello")
+ ([]{
+ return "Hello World!";
+ });
+
+ CROW_ROUTE(app, "/about")
+ ([](){
+ return "About Crow example.";
+ });
+
+ // simple json response
+ CROW_ROUTE(app, "/json")
+ ([]{
+ crow::json::wvalue x;
+ x["message"] = "Hello, World!";
+ return x;
+ });
+
+ CROW_ROUTE(app,"/hello/<int>")
+ ([](int count){
+ if (count > 100)
+ return crow::response(400);
+ std::ostringstream os;
+ os << count << " bottles of beer!";
+ return crow::response(os.str());
+ });
+
+ CROW_ROUTE(app,"/add/<int>/<int>")
+ ([](const crow::request& req, crow::response& res, int a, int b){
+ std::ostringstream os;
+ os << a+b;
+ res.write(os.str());
+ res.end();
+ });
+
+ // Compile error with message "Handler type is mismatched with URL paramters"
+ //CROW_ROUTE(app,"/another/<int>")
+ //([](int a, int b){
+ //return crow::response(500);
+ //});
+
+ // more json example
+ CROW_ROUTE(app, "/add_json")
+ ([](const crow::request& req){
+ auto x = crow::json::load(req.body);
+ if (!x)
+ return crow::response(400);
+ int sum = x["a"].i()+x["b"].i();
+ std::ostringstream os;
+ os << sum;
+ return crow::response{os.str()};
+ });
+
+ CROW_ROUTE(app, "/params")
+ ([](const crow::request& req){
+ std::ostringstream os;
+ os << "Params: " << req.url_params << "\n\n";
+ os << "The key 'foo' was " << (req.url_params.get("foo") == nullptr ? "not " : "") << "found.\n";
+ if(req.url_params.get("pew") != nullptr) {
+ double countD = boost::lexical_cast<double>(req.url_params.get("pew"));
+ os << "The value of 'pew' is " << countD << '\n';
+ }
+ auto count = req.url_params.get_list("count");
+ os << "The key 'count' contains " << count.size() << " value(s).\n";
+ for(const auto& countVal : count) {
+ os << " - " << countVal << '\n';
+ }
+ return crow::response{os.str()};
+ });
+
+ // ignore all log
+ crow::logger::setLogLevel(crow::LogLevel::DEBUG);
+ //crow::logger::setHandler(std::make_shared<ExampleLogHandler>());
+
+ app.port(18080)
+ .multithreaded()
+ .run();
+}