Skip to content
Snippets Groups Projects
fixRelocInfoJSONIssue.patch 3.55 KiB
Newer Older
--- ../../../world-storage-cpp-server/EtsiServerGen/api/RelocalizationInformationApi.cpp	2024-04-25 11:26:25.741693040 +0200
+++ ../../../../world-storage-cpp-serverRestBed/EtsiServerGen/api/RelocalizationInformationApi.cpp	2024-04-24 17:42:01.508637971 +0200
@@ -20,7 +20,7 @@
 #include <boost/property_tree/json_parser.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/algorithm/string.hpp>
-
+#include <iostream>
 #include "RelocalizationInformationApi.h"
 
 namespace org {
@@ -155,21 +155,36 @@
 
 void RelocalizationInformationResource::handler_GET_internal(const std::shared_ptr<restbed::Session> session)
 {
-    const auto request = session->get_request();
-    // Getting the query params
-    std::string uuids_raw = request->get_query_parameter("uuids");
-    std::vector<RelocalizationInformationParam> uuids;
-    std::vector<std::string> uuids_temp;
-    boost::split(uuids_temp, uuids_raw, boost::is_any_of(","));
-    std::transform(uuids_temp.begin(), uuids_temp.end(), std::back_inserter(uuids), [](const auto& i){ RelocalizationInformationParam ret; ret.fromString(i); return ret;});
-    std::string capabilities_raw = request->get_query_parameter("capabilities");
-    std::vector<Capability> capabilities;
-    std::vector<std::string> capabilities_temp;
-    boost::split(capabilities_temp, capabilities_raw, boost::is_any_of(","));
-    std::transform(capabilities_temp.begin(), capabilities_temp.end(), std::back_inserter(capabilities), [](const auto& i){ Capability ret; ret.fromString(i); return ret;});
-    // Getting the headers
-    std::string token = request->get_header("token", "");
-    
+const auto request = session->get_request();
+// Getting the query params
+std::string uuids_raw = request->get_query_parameter("uuids");
+std::vector<RelocalizationInformationParam> uuids;
+std::vector<std::string> uuids_temp;
+boost::split(uuids_temp, uuids_raw, boost::is_any_of(";"));
+for (auto& uuid_str : uuids_temp) {
+    std::replace(uuid_str.begin(), uuid_str.end(), '(', '{');
+    std::replace(uuid_str.begin(), uuid_str.end(), ')', '}');
+    RelocalizationInformationParam ret;
+    ret.fromJsonString(uuid_str);
+    uuids.push_back(ret);
+}
+
+std::string capabilities_raw = request->get_query_parameter("capabilities");
+std::vector<Capability> capabilities;
+std::vector<std::string> capabilities_temp;
+boost::split(capabilities_temp, capabilities_raw, boost::is_any_of(";"));
+for (auto& cap_str : capabilities_temp) {
+    std::replace(cap_str.begin(), cap_str.end(), '(', '{');
+    std::replace(cap_str.begin(), cap_str.end(), ')', '}');
+    Capability ret;
+    ret.fromJsonString(cap_str);
+    capabilities.push_back(ret);
+}
+
+// Getting the headers
+std::string token = request->get_header("token", "");
+
+
     int status_code = 500;
     GetRelocalizationInformation_200_response resultObject = GetRelocalizationInformation_200_response{};
     std::string result = "";
@@ -209,7 +224,7 @@
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Invalid UUID supplied.";
     
-        result = resultObject;
+        result = resultObject.toJsonString();
         returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders);
         return;
     }
@@ -217,7 +232,7 @@
         responseHeaders.insert(std::make_pair("Content-Type", "text/plain"));
         result = "Not found, could not find UUID in database.";
     
-        result = resultObject;
+        result = resultObject.toJsonString();
         returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders);
         return;
     }