From 5e17083fa6c407c79a4423599d36772496990064 Mon Sep 17 00:00:00 2001 From: Dario Date: Tue, 22 Oct 2019 15:14:43 +0200 Subject: [PATCH] change json to pointer --- src/cpp/JSONInterface/JsonGetLogin.cpp | 46 ++++++++++---------- src/cpp/JSONInterface/JsonGetLogin.h | 2 +- src/cpp/JSONInterface/JsonRequestHandler.cpp | 7 ++- src/cpp/JSONInterface/JsonRequestHandler.h | 2 +- src/cpp/JSONInterface/JsonUnknown.cpp | 8 ++-- src/cpp/JSONInterface/JsonUnknown.h | 2 +- src/cpp/model/User.cpp | 1 + 7 files changed, 36 insertions(+), 32 deletions(-) diff --git a/src/cpp/JSONInterface/JsonGetLogin.cpp b/src/cpp/JSONInterface/JsonGetLogin.cpp index c9d973cc7..bb41ff299 100644 --- a/src/cpp/JSONInterface/JsonGetLogin.cpp +++ b/src/cpp/JSONInterface/JsonGetLogin.cpp @@ -3,11 +3,11 @@ #include "../SingletonManager/SessionManager.h" -Poco::JSON::Object JsonGetLogin::handle(Poco::Dynamic::Var params) +Poco::JSON::Object* JsonGetLogin::handle(Poco::Dynamic::Var params) { int session_id = 0; - Poco::JSON::Object result; + Poco::JSON::Object* result = new Poco::JSON::Object; if (params.isStruct()) { session_id = params["session_id"]; //std::string miau = params["miau"]; @@ -24,28 +24,28 @@ Poco::JSON::Object JsonGetLogin::handle(Poco::Dynamic::Var params) //auto var = params[0]; } catch (const std::invalid_argument& ia) { - result.set("state", "error"); - result.set("msg", "error parsing query params, invalid argument: "); - result.set("details", ia.what()); + result->set("state", "error"); + result->set("msg", "error parsing query params, invalid argument: "); + result->set("details", ia.what()); return result; } catch (const std::out_of_range& oor) { - result.set("state", "error"); - result.set("msg", "error parsing query params, Out of Range error: "); - result.set("details", oor.what()); + result->set("state", "error"); + result->set("msg", "error parsing query params, Out of Range error: "); + result->set("details", oor.what()); return result; } catch (const std::logic_error & ler) { - result.set("state", "error"); - result.set("msg", "error parsing query params, Logical error: "); - result.set("details", ler.what()); + result->set("state", "error"); + result->set("msg", "error parsing query params, Logical error: "); + result->set("details", ler.what()); return result; } catch (Poco::Exception& ex) { //printf("[JsonGetLogin::handle] exception: %s\n", ex.displayText().data()); - result.set("state", "error"); - result.set("msg", "error parsing query params, Poco Error"); - result.set("details", ex.displayText()); + result->set("state", "error"); + result->set("msg", "error parsing query params, Poco Error"); + result->set("details", ex.displayText()); return result; } } @@ -56,25 +56,25 @@ Poco::JSON::Object JsonGetLogin::handle(Poco::Dynamic::Var params) if (session) { auto user = session->getUser(); if (!user) { - result.set("state", "not found"); - result.set("msg", "Session didn't contain user"); + result->set("state", "not found"); + result->set("msg", "Session didn't contain user"); return result; } - result.set("state", "success"); - result.set("clientIP", session->getClientIp()); - result.set("user", user->getJson()); + result->set("state", "success"); + result->set("clientIP", session->getClientIp()); + result->set("user", user->getJson()); return result; } else { - result.set("state", "not found"); - result.set("msg", "Session not found"); + result->set("state", "not found"); + result->set("msg", "Session not found"); return result; } } else { - result.set("state", "error"); - result.set("msg", "empty session id"); + result->set("state", "error"); + result->set("msg", "empty session id"); } return result; diff --git a/src/cpp/JSONInterface/JsonGetLogin.h b/src/cpp/JSONInterface/JsonGetLogin.h index e80435e25..401087535 100644 --- a/src/cpp/JSONInterface/JsonGetLogin.h +++ b/src/cpp/JSONInterface/JsonGetLogin.h @@ -6,7 +6,7 @@ class JsonGetLogin : public JsonRequestHandler { public: - Poco::JSON::Object handle(Poco::Dynamic::Var params); + Poco::JSON::Object* handle(Poco::Dynamic::Var params); protected: diff --git a/src/cpp/JSONInterface/JsonRequestHandler.cpp b/src/cpp/JSONInterface/JsonRequestHandler.cpp index 6d4058e42..b98d75329 100644 --- a/src/cpp/JSONInterface/JsonRequestHandler.cpp +++ b/src/cpp/JSONInterface/JsonRequestHandler.cpp @@ -24,7 +24,7 @@ void JsonRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Po auto method = request.getMethod(); std::istream& request_stream = request.stream(); - Poco::JSON::Object json_result; + Poco::JSON::Object* json_result = nullptr; if (method == "POST") { // extract parameter from request Poco::JSON::Parser jsonParser; @@ -42,7 +42,10 @@ void JsonRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Po auto queryParameters = uri.getQueryParameters(); json_result = handle(queryParameters); } - json_result.stringify(responseStream); + if (json_result) { + json_result->stringify(responseStream); + delete json_result; + } if (_compressResponse) _gzipStream.close(); } diff --git a/src/cpp/JSONInterface/JsonRequestHandler.h b/src/cpp/JSONInterface/JsonRequestHandler.h index 57068b7fa..fca79dd31 100644 --- a/src/cpp/JSONInterface/JsonRequestHandler.h +++ b/src/cpp/JSONInterface/JsonRequestHandler.h @@ -9,7 +9,7 @@ class JsonRequestHandler : public Poco::Net::HTTPRequestHandler public: void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response); - virtual Poco::JSON::Object handle(Poco::Dynamic::Var params) = 0; + virtual Poco::JSON::Object* handle(Poco::Dynamic::Var params) = 0; protected: diff --git a/src/cpp/JSONInterface/JsonUnknown.cpp b/src/cpp/JSONInterface/JsonUnknown.cpp index 07612c2ec..91c46eb54 100644 --- a/src/cpp/JSONInterface/JsonUnknown.cpp +++ b/src/cpp/JSONInterface/JsonUnknown.cpp @@ -1,11 +1,11 @@ #include "JsonUnknown.h" -Poco::JSON::Object JsonUnknown::handle(Poco::Dynamic::Var params) +Poco::JSON::Object* JsonUnknown::handle(Poco::Dynamic::Var params) { - Poco::JSON::Object result; + Poco::JSON::Object* result = new Poco::JSON::Object; - result.set("state", "error"); - result.set("msg", "unknown call"); + result->set("state", "error"); + result->set("msg", "unknown call"); return result; } \ No newline at end of file diff --git a/src/cpp/JSONInterface/JsonUnknown.h b/src/cpp/JSONInterface/JsonUnknown.h index 62c8eb34c..6df02598e 100644 --- a/src/cpp/JSONInterface/JsonUnknown.h +++ b/src/cpp/JSONInterface/JsonUnknown.h @@ -6,7 +6,7 @@ class JsonUnknown : public JsonRequestHandler { public: - Poco::JSON::Object handle(Poco::Dynamic::Var params); + Poco::JSON::Object* handle(Poco::Dynamic::Var params); protected: diff --git a/src/cpp/model/User.cpp b/src/cpp/model/User.cpp index ad5066e4f..1c6943bb9 100644 --- a/src/cpp/model/User.cpp +++ b/src/cpp/model/User.cpp @@ -365,6 +365,7 @@ Poco::JSON::Object User::getJson() { lock(); Poco::JSON::Object userObj; + userObj.set("first_name", mFirstName); userObj.set("last_name", mLastName); userObj.set("email", mEmail);