From c91f047cfbc0c732b74504418335ded42532a8ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Tomic=CC=8Cevic=CC=81?= Date: Fri, 16 Oct 2015 13:19:26 +0200 Subject: [PATCH 1/4] const other in copy constructor of speedy --- speedy/speedy.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/speedy/speedy.hpp b/speedy/speedy.hpp index 6eb0049cf..22d5d8898 100644 --- a/speedy/speedy.hpp +++ b/speedy/speedy.hpp @@ -34,7 +34,7 @@ public: size_t capacity = 100) : server(*loop), prefix(std::move(prefix)), router(capacity) {} - Speedy(Speedy&) = delete; + Speedy(const Speedy&) = delete; Speedy(Speedy&&) = delete; void use(Middlewares::middleware_cb_t cb) From 3dae70ec3da433d883655cc5e50fb4b937025527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Tomic=CC=8Cevic=CC=81?= Date: Sat, 17 Oct 2015 12:46:38 +0200 Subject: [PATCH 2/4] added rapidjson submodule to json --- .gitmodules | 3 +++ json/rapidjson | 1 + 2 files changed, 4 insertions(+) create mode 160000 json/rapidjson diff --git a/.gitmodules b/.gitmodules index 85fbffc8a..43d7bcabc 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "speedy/rapidjson"] path = speedy/rapidjson url = https://github.com/miloyip/rapidjson.git +[submodule "json/rapidjson"] + path = json/rapidjson + url = https://github.com/miloyip/rapidjson.git diff --git a/json/rapidjson b/json/rapidjson new file mode 160000 index 000000000..54eb069f0 --- /dev/null +++ b/json/rapidjson @@ -0,0 +1 @@ +Subproject commit 54eb069f0618bc01205434e5c607d38e96a4ba59 From 7dcb23fa72550ac13917671f3549649463e90658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Tomic=CC=8Cevic=CC=81?= Date: Sat, 17 Oct 2015 12:53:46 +0200 Subject: [PATCH 3/4] modified rapidjson middleware --- speedy/rapidjson_middleware.hpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/speedy/rapidjson_middleware.hpp b/speedy/rapidjson_middleware.hpp index 0ccb4e23d..33ee28a6b 100644 --- a/speedy/rapidjson_middleware.hpp +++ b/speedy/rapidjson_middleware.hpp @@ -14,14 +14,14 @@ namespace sp bool rapidjson_middleware(sp::Request& req, sp::Response& res) { - if (req.json.Parse(req.body.c_str()).HasParseError()) { - const char *errorCode = rapidjson::GetParseError_En(req.json.GetParseError()); - std::string parseError = "JSON parse error: " + std::string(errorCode); - res.send(http::Status::BadRequest, parseError); - return false; - } + if(!req.json.Parse(req.body.c_str()).HasParseError()) + return true; - return true; + auto error_str = rapidjson::GetParseError_En(req.json.GetParseError()); + std::string parse_error = "JSON parse error: " + std::string(error_str); + + res.send(http::Status::BadRequest, parse_error); + return false; } } From 80aa247deeb409395acd5e73a8301651f94910ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Tomic=CC=8Cevic=CC=81?= Date: Sat, 17 Oct 2015 13:26:07 +0200 Subject: [PATCH 4/4] refactoring a bit --- .gitmodules | 3 --- api/resources/node.hpp | 5 +++++ json/rapidjson | 1 - speedy/http/response.inl | 3 +++ speedy/speedy.hpp | 14 ++++++++------ storage/model/properties/properties.hpp | 1 + 6 files changed, 17 insertions(+), 10 deletions(-) delete mode 160000 json/rapidjson diff --git a/.gitmodules b/.gitmodules index 43d7bcabc..85fbffc8a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,3 @@ [submodule "speedy/rapidjson"] path = speedy/rapidjson url = https://github.com/miloyip/rapidjson.git -[submodule "json/rapidjson"] - path = json/rapidjson - url = https://github.com/miloyip/rapidjson.git diff --git a/api/resources/node.hpp b/api/resources/node.hpp index 60e6874f3..6ad3000e5 100644 --- a/api/resources/node.hpp +++ b/api/resources/node.hpp @@ -34,6 +34,11 @@ public: // auto node = atom->first(); + for(auto it = req.json.MemberBegin(); it != req.json.MemberEnd(); ++it) + { + node->properties.emplace(it->name.GetString(), it->value.GetString()); + } + // TODO read the JSON body and store the properties in the // first version // diff --git a/json/rapidjson b/json/rapidjson deleted file mode 160000 index 54eb069f0..000000000 --- a/json/rapidjson +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 54eb069f0618bc01205434e5c607d38e96a4ba59 diff --git a/speedy/http/response.inl b/speedy/http/response.inl index 32524ceda..bc142449e 100644 --- a/speedy/http/response.inl +++ b/speedy/http/response.inl @@ -50,6 +50,9 @@ void Response::send(const std::string& body) if(!conn.keep_alive) conn.close(); + conn.request.headers.clear(); + conn.request.body.clear(); + conn.response.status = Status::Ok; conn.response.buffer.clear(); conn.response.headers.clear(); diff --git a/speedy/speedy.hpp b/speedy/speedy.hpp index 99e791638..4b93083f2 100644 --- a/speedy/speedy.hpp +++ b/speedy/speedy.hpp @@ -71,6 +71,14 @@ public: router.compile(); server.listen(ip, [this](Request& req, Response& res) { + auto route = router.match(R3::to_r3_method(req.method), req.url); + + if(!route.exists()) + return res.send(http::Status::NotFound, "Resource not found"); + + // parse url params + route.populate(req); + // run middlewares auto result = middlewares.run(req, res); @@ -78,12 +86,6 @@ public: if(!result) return; - auto route = router.match(R3::to_r3_method(req.method), req.url); - - if(!route.exists()) - return res.send(http::Status::NotFound, "Resource not found"); - - route.populate(req); route(req, res); }); } diff --git a/storage/model/properties/properties.hpp b/storage/model/properties/properties.hpp index e60955b1f..1050b3790 100644 --- a/storage/model/properties/properties.hpp +++ b/storage/model/properties/properties.hpp @@ -2,6 +2,7 @@ #define MEMGRAPH_STORAGE_MODEL_PROPERTIES_PROPERTIES_HPP #include +#include "rapidjson/document.h" #include "property.hpp"