diff options
author | Ed Tanous <ed.tanous@intel.com> | 2017-03-03 03:48:24 +0300 |
---|---|---|
committer | Ed Tanous <ed.tanous@intel.com> | 2017-03-03 03:48:24 +0300 |
commit | 904063f6e5eccdd15d7a9d2a21200f99abc679ae (patch) | |
tree | 1ef33196bf604ac511f9a2596b449666dd0ab127 /src/webserver_main.cpp | |
parent | f927347406ef6ea49edf710897b213ccd8c8e284 (diff) | |
download | bmcweb-904063f6e5eccdd15d7a9d2a21200f99abc679ae.tar.xz |
incremental
Diffstat (limited to 'src/webserver_main.cpp')
-rw-r--r-- | src/webserver_main.cpp | 113 |
1 files changed, 6 insertions, 107 deletions
diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp index bbe599e847..34f91d50bd 100644 --- a/src/webserver_main.cpp +++ b/src/webserver_main.cpp @@ -22,13 +22,15 @@ #include "crow/websocket.h" #include "color_cout_g3_sink.hpp" - +#include "webassets.hpp" #include "token_authorization_middleware.hpp" #include <iostream> #include <string> #include "ssl_key_handler.hpp" +#include <webassets.hpp> + int main(int argc, char** argv) { auto worker = g3::LogWorker::createLogWorker(); @@ -49,114 +51,11 @@ int main(int argc, char** argv) CROW_ROUTE(app, "/") .name("hello")([] { return "Hello World!"; - }); - - CROW_ROUTE(app, "/about") - ([]() { - return "About Crow example."; - }); - - // a request to /path should be forwarded to /path/ - CROW_ROUTE(app, "/path/") - ([]() { - return "Trailing slash test case.."; - }); - - // simple json response - // To see it in action enter {ip}:18080/json - CROW_ROUTE(app, "/json") - ([] { - crow::json::wvalue x; - x["message"] = "Hello, World!"; - return x; - }); - - // To see it in action enter {ip}:18080/hello/{integer_between -2^32 and 100} and you should receive - // {integer_between -2^31 and 100} bottles of beer! - 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()); - }); - - // To see it in action submit {ip}:18080/add/1/2 and you should receive 3 (exciting, isn't it) - 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 - - // To see it in action, I recommend to use the Postman Chrome extension: - // * Set the address to {ip}:18080/add_json - // * Set the method to post - // * Select 'raw' and then JSON - // * Add {"a": 1, "b": 1} - // * Send and you should receive 2 - - // A simpler way for json example: - // * curl -d '{"a":1,"b":2}' {ip}:18080/add_json - CROW_ROUTE(app, "/add_json") - .methods("POST"_method)([](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()}; - }); - - // Example of a request taking URL parameters - // If you want to activate all the functions just query - // {ip}:18080/params?foo='blabla'&pew=32&count[]=a&count[]=b - CROW_ROUTE(app, "/params") - ([](const crow::request& req) { - std::ostringstream os; - - // To get a simple string from the url params - // To see it in action /params?foo='blabla' - os << "Params: " << req.url_params << "\n\n"; - os << "The key 'foo' was " << (req.url_params.get("foo") == nullptr ? "not " : "") << "found.\n"; - - // To get a double from the request - // To see in action submit something like '/params?pew=42' - 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'; - } - - // To get a list from the request - // You have to submit something like '/params?count[]=a&count[]=b' to have a list with two values (a and b) - 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()}; - }); + }); - CROW_ROUTE(app, "/large") - ([] { - return std::string(512 * 1024, ' '); - }); + crow::webassets::request_routes(app); - // ignore all log crow::logger::setLogLevel(crow::LogLevel::DEBUG); - app.port(18080) - .multithreaded() - .run(); + app.port(18080).run(); } |