From 0635bbd5c2f445bf3b9ae524ec6244e2356f0210 Mon Sep 17 00:00:00 2001 From: Lorow Date: Tue, 13 May 2025 22:53:51 +0200 Subject: [PATCH] Make command manager output proper json --- .../CommandManager/CommandManager.cpp | 17 +++++++++++------ .../ProjectConfig/ProjectConfig/Models.hpp | 4 ++-- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/components/CommandManager/CommandManager/CommandManager.cpp b/components/CommandManager/CommandManager/CommandManager.cpp index acd66ad..a788760 100644 --- a/components/CommandManager/CommandManager/CommandManager.cpp +++ b/components/CommandManager/CommandManager/CommandManager.cpp @@ -57,14 +57,17 @@ std::function CommandManager::createCommand(CommandType type, s CommandResult CommandManager::executeFromJson(std::string_view json) { - std::string results = ""; - cJSON *parsedJson = cJSON_Parse(json.data()); if (parsedJson == nullptr) return CommandResult::getErrorResult("Initial JSON Parse: Invalid JSON"); const cJSON *commandData = nullptr; const cJSON *commands = cJSON_GetObjectItem(parsedJson, "commands"); + cJSON *responseDocument = cJSON_CreateObject(); + cJSON *responses = cJSON_CreateArray(); + cJSON *response = nullptr; + + cJSON_AddItemToObject(responseDocument, "results", responses); if (cJSON_GetArraySize(commands) == 0) { @@ -93,13 +96,15 @@ CommandResult CommandManager::executeFromJson(std::string_view json) cJSON_Delete(parsedJson); return CommandResult::getErrorResult("Unknown command"); } - - // todo, make it a proper json later - results += command().getResult() + ", \n"; + response = cJSON_CreateString(command().getResult().c_str()); + cJSON_AddItemToArray(responses, response); } + auto jsonString = cJSON_Print(responseDocument); + cJSON_Delete(responseDocument); cJSON_Delete(parsedJson); - return CommandResult::getSuccessResult(results); + + return CommandResult::getSuccessResult(jsonString); } CommandResult CommandManager::executeFromType(CommandType type, std::string_view json) diff --git a/components/ProjectConfig/ProjectConfig/Models.hpp b/components/ProjectConfig/ProjectConfig/Models.hpp index 9441be5..df5dd14 100644 --- a/components/ProjectConfig/ProjectConfig/Models.hpp +++ b/components/ProjectConfig/ProjectConfig/Models.hpp @@ -127,7 +127,7 @@ struct CameraConfig_t : BaseConfigModel // save them under an indexed name and load them as such. struct WiFiConfig_t : BaseConfigModel { - // default construcotr used for loading + // default constructor used for loading WiFiConfig_t(Preferences *pref) : BaseConfigModel(pref) {} WiFiConfig_t( @@ -284,7 +284,7 @@ public: } return Helpers::format_string( - "%s, %s, %s, networks: [%s], %s, %s", + "{%s, %s, %s, \"networks\": [%s], %s, %s}", this->device.toRepresentation().c_str(), this->mdns.toRepresentation().c_str(), this->camera.toRepresentation().c_str(),