Commit 85fba134915f7d575335dcaa44e2ebda5e8f7d05

Authored by Moritz Wirger
1 parent a3900e59

Closes #9

- exported duplicate code to another function
hueplusplus/include/IHttpHandler.h 100644 → 100755
@@ -31,7 +31,6 @@ @@ -31,7 +31,6 @@
31 class IHttpHandler 31 class IHttpHandler
32 { 32 {
33 public: 33 public:
34 -  
35 //! \brief Virtual dtor 34 //! \brief Virtual dtor
36 virtual ~IHttpHandler() = default; 35 virtual ~IHttpHandler() = default;
37 36
@@ -174,19 +173,7 @@ public: @@ -174,19 +173,7 @@ public:
174 //! \return Json::Value containing the parsed body of the response of the host 173 //! \return Json::Value containing the parsed body of the response of the host
175 virtual Json::Value GETJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const 174 virtual Json::Value GETJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const
176 { 175 {
177 - std::string response = GETString(uri, "application/json", body.toStyledString(), adr, port);  
178 -  
179 - std::string error;  
180 - Json::Value result;  
181 - Json::CharReaderBuilder builder;  
182 - builder["collectComments"] = false;  
183 - std::unique_ptr<Json::CharReader> reader = std::unique_ptr<Json::CharReader>(builder.newCharReader());  
184 - if (!reader->parse(response.c_str(), response.c_str() + response.length(), &result, &error))  
185 - {  
186 - std::cout << "IHttpHandler: Error while parsing JSON in function GETJson(): " << error << std::endl;  
187 - throw(std::runtime_error("IHttpHandler: Error while parsing JSON in function GETJson()"));  
188 - }  
189 - return result; 176 + return strToJsonValue(GETString(uri, "application/json", body.toStyledString(), adr, port));
190 }; 177 };
191 178
192 //! \brief Virtual function that should send a HTTP POST request to the specified host and return the body of the response. 179 //! \brief Virtual function that should send a HTTP POST request to the specified host and return the body of the response.
@@ -199,19 +186,7 @@ public: @@ -199,19 +186,7 @@ public:
199 //! \return Json::Value containing the parsed body of the response of the host 186 //! \return Json::Value containing the parsed body of the response of the host
200 virtual Json::Value POSTJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const 187 virtual Json::Value POSTJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const
201 { 188 {
202 - std::string response = POSTString(uri, "application/json", body.toStyledString(), adr, port);  
203 -  
204 - std::string error;  
205 - Json::Value result;  
206 - Json::CharReaderBuilder builder;  
207 - builder["collectComments"] = false;  
208 - std::unique_ptr<Json::CharReader> reader = std::unique_ptr<Json::CharReader>(builder.newCharReader());  
209 - if (!reader->parse(response.c_str(), response.c_str() + response.length(), &result, &error))  
210 - {  
211 - std::cout << "IHttpHandler: Error while parsing JSON in function POSTJson(): " << error << std::endl;  
212 - throw(std::runtime_error("IHttpHandler: Error while parsing JSON in function POSTJson()"));  
213 - }  
214 - return result; 189 + return strToJsonValue(POSTString(uri, "application/json", body.toStyledString(), adr, port));
215 } 190 }
216 191
217 //! \brief Virtual function that should send a HTTP PUT request to the specified host and return the body of the response. 192 //! \brief Virtual function that should send a HTTP PUT request to the specified host and return the body of the response.
@@ -224,19 +199,7 @@ public: @@ -224,19 +199,7 @@ public:
224 //! \return Json::Value containing the parsed body of the response of the host 199 //! \return Json::Value containing the parsed body of the response of the host
225 virtual Json::Value PUTJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const 200 virtual Json::Value PUTJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const
226 { 201 {
227 - std::string response = PUTString(uri, "application/json", body.toStyledString(), adr, port);  
228 -  
229 - std::string error;  
230 - Json::Value result;  
231 - Json::CharReaderBuilder builder;  
232 - builder["collectComments"] = false;  
233 - std::unique_ptr<Json::CharReader> reader = std::unique_ptr<Json::CharReader>(builder.newCharReader());  
234 - if (!reader->parse(response.c_str(), response.c_str() + response.length(), &result, &error))  
235 - {  
236 - std::cout << "IHttpHandler: Error while parsing JSON in function PUTJson(): " << error << std::endl;  
237 - throw(std::runtime_error("IHttpHandler: Error while parsing JSON in function PUTJson()"));  
238 - }  
239 - return result; 202 + return strToJsonValue(PUTString(uri, "application/json", body.toStyledString(), adr, port));
240 }; 203 };
241 204
242 //! \brief Virtual function that should send a HTTP DELETE request to the specified host and return the body of the response. 205 //! \brief Virtual function that should send a HTTP DELETE request to the specified host and return the body of the response.
@@ -248,21 +211,30 @@ public: @@ -248,21 +211,30 @@ public:
248 //! \param port Optional integer that specifies the port to which the request is sent to. Default is 80 211 //! \param port Optional integer that specifies the port to which the request is sent to. Default is 80
249 //! \return Json::Value containing the parsed body of the response of the host 212 //! \return Json::Value containing the parsed body of the response of the host
250 virtual Json::Value DELETEJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const 213 virtual Json::Value DELETEJson(std::string uri, const Json::Value& body, const std::string &adr, int port=80) const
251 - {  
252 - std::string response = DELETEString(uri, "application/json", body.toStyledString(), adr, port); 214 + {
  215 + return strToJsonValue(DELETEString(uri, "application/json", body.toStyledString(), adr, port));
  216 + };
253 217
254 - std::string error;  
255 - Json::Value result;  
256 - Json::CharReaderBuilder builder;  
257 - builder["collectComments"] = false;  
258 - std::unique_ptr<Json::CharReader> reader = std::unique_ptr<Json::CharReader>(builder.newCharReader());  
259 - if (!reader->parse(response.c_str(), response.c_str() + response.length(), &result, &error))  
260 - {  
261 - std::cout << "IHttpHandler: Error while parsing JSON in function PUTJson(): " << error << std::endl;  
262 - throw(std::runtime_error("IHttpHandler: Error while parsing JSON in function PUTJson()"));  
263 - }  
264 - return result;  
265 - }; 218 +private:
  219 +
  220 + //! \brief Function that converts a given string to a Json::Value
  221 + //!
  222 + //! \param str String that gets converted
  223 + //! \return Json::Value containing parsed string
  224 + Json::Value strToJsonValue(std::string str) const
  225 + {
  226 + std::string error;
  227 + Json::Value result;
  228 + Json::CharReaderBuilder builder;
  229 + builder["collectComments"] = false;
  230 + std::unique_ptr<Json::CharReader> reader = std::unique_ptr<Json::CharReader>(builder.newCharReader());
  231 + if (!reader->parse(str.c_str(), str.c_str() + str.length(), &result, &error))
  232 + {
  233 + std::cout << "IHttpHandler: Error while parsing JSON in function strToJsonValue(): " << error << std::endl;
  234 + throw(std::runtime_error("IHttpHandler: Error while parsing JSON in function strToJsonValue()"));
  235 + }
  236 + return result;
  237 + }
266 }; 238 };
267 239
268 #endif 240 #endif