From dbe4fda9aa5ebd29457ba0a6e9db5b23ab4f5800 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Tue, 21 Jun 2022 13:42:22 +0800 Subject: [PATCH] =?UTF-8?q?websdk=E8=BF=94=E5=9B=9E=E7=9A=84=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E7=94=A8cJson=E5=BA=93=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sdk/webservice/ManagerV2.cpp | 103 +- sdk/webservice/ManagerV2.h | 3 + sdk/webservice/WSUser.cpp | 3106 ++++++++++++---------------------- sdk/webservice/WSUser.h | 1 - 4 files changed, 1204 insertions(+), 2009 deletions(-) diff --git a/sdk/webservice/ManagerV2.cpp b/sdk/webservice/ManagerV2.cpp index a3cc25f5..435ad016 100644 --- a/sdk/webservice/ManagerV2.cpp +++ b/sdk/webservice/ManagerV2.cpp @@ -827,6 +827,38 @@ namespace ver_2 return n; } + static bool GetColor(const std::string& colorText, HGUInt &r, HGUInt &g, HGUInt &b) + { + if (7 != colorText.size()) + return false; + + if ('#' != colorText[0]) + return false; + for (int i = 1; i < (int)colorText.size(); ++i) + { + if ((colorText[i] >= '0' && colorText[i] <= '9') || (colorText[i] >= 'a' && colorText[i] <= 'f') + || (colorText[i] >= 'A' && colorText[i] <= 'F')) + { + + } + else + { + return false; + } + } + + char colorR[3] = { 0 }; + char colorG[3] = { 0 }; + char colorB[3] = { 0 }; + strncpy(colorR, colorText.c_str() + 1, 2); + strncpy(colorG, colorText.c_str() + 3, 2); + strncpy(colorB, colorText.c_str() + 5, 2); + r = htoi(colorR); + g = htoi(colorG); + b = htoi(colorB); + return true; + } + int ManagerV2::LocalImageAddWatermark(const std::string& imagePath, const std::string& text, const std::string& textColor, int textOpacity, const std::string& textPos, int marginLeft, int marginTop, int marginRight, int marginBottom, int locationX, int locationY, const std::string& fontName, int fontSize, bool fontBold, bool fontUnderline, bool fontItalic, bool fontStrikeout, std::string& outImagePath, std::string& errInfo) @@ -834,7 +866,7 @@ namespace ver_2 outImagePath.clear(); errInfo = "错误"; - if (imagePath.empty() || text.empty() || 7 != textColor.size() || textOpacity < 0 || textOpacity > 255 || marginLeft < 0 || marginTop < 0 + if (imagePath.empty() || text.empty() || textColor.empty() || textOpacity < 0 || textOpacity > 255 || marginLeft < 0 || marginTop < 0 || marginRight < 0 || marginBottom < 0 || fontName.empty() || fontSize <= 0) return -1; @@ -864,31 +896,12 @@ namespace ver_2 return -1; } - if ('#' != textColor[0]) - return -1; - for (int i = 1; i < (int)textColor.size(); ++i) + HGUInt r, g, b; + if (!GetColor(textColor, r, g, b)) { - if ((textColor[i] >= '0' && textColor[i] <= '9') || (textColor[i] >= 'a' && textColor[i] <= 'f') - || (textColor[i] >= 'A' && textColor[i] <= 'F')) - { - - } - else - { - return -1; - } + return -1; } - char colorR[3] = { 0 }; - char colorG[3] = { 0 }; - char colorB[3] = { 0 }; - strncpy(colorR, textColor.c_str() + 1, 2); - strncpy(colorG, textColor.c_str() + 3, 2); - strncpy(colorB, textColor.c_str() + 5, 2); - HGUInt r = htoi(colorR); - HGUInt g = htoi(colorG); - HGUInt b = htoi(colorB); - int ret = -1; HGImage image = NULL; HGImgFmt_LoadImage(imagePath.c_str(), 0, NULL, 0, HGBASE_IMGORIGIN_TOP, &image); @@ -962,6 +975,50 @@ namespace ver_2 return ret; } + int ManagerV2::LocalImageDecontamination(const std::string& imagePath, const std::string mode, const std::string& color, + int x, int y, int width, int height, std::string& outImagePath, std::string& errInfo) + { + outImagePath.clear(); + errInfo = "错误"; + + if (imagePath.empty() || mode.empty() || color.empty() || x < 0 || y < 0 || width <= 0 || height <= 0) + return -1; + if ("inside" != mode && "outside" != mode) + return -1; + + HGUInt r, g, b; + if (!GetColor(color, r, g, b)) + { + return -1; + } + + int ret = -1; + HGImage image = NULL; + HGImgFmt_LoadImage(imagePath.c_str(), 0, NULL, 0, HGBASE_IMGORIGIN_TOP, &image); + if (NULL != image) + { + HGUInt decoType = HGIMGPROC_DECOTYPE_INSIDE; + if ("outside" == mode) + decoType = HGIMGPROC_DECOTYPE_OUTSIDE; + + if (HGBASE_ERR_OK == HGImgProc_ImageDecontamination(image, image, decoType, x, y, + width, height, HG_MAKECOLOR(r, g, b, 0))) + { + if (0 == SaveImage(image, outImagePath)) + { + m_saveFilePathList.push_back(outImagePath); + RestoreSaveFilePathList(m_saveFilePathList); + errInfo.clear(); + ret = 0; + } + } + + HGBase_DestroyImage(image); + } + + return ret; + } + int ManagerV2::UploadLocalFile(const std::string& filePath, const std::string& remoteFilePath, const std::string& uploadMode, const std::string& httpHost, int httpPort, const std::string& httpPath, const std::string& ftpUser, const std::string& ftpPassword, const std::string& ftpHost, int ftpPort, std::string& errInfo) diff --git a/sdk/webservice/ManagerV2.h b/sdk/webservice/ManagerV2.h index 4e49ce0d..fec8f686 100644 --- a/sdk/webservice/ManagerV2.h +++ b/sdk/webservice/ManagerV2.h @@ -170,6 +170,9 @@ namespace ver_2 int LocalImageAddWatermark(const std::string& imagePath, const std::string& text, const std::string& textColor, int textOpacity, const std::string& textPos, int marginLeft, int marginTop, int marginRight, int marginBottom, int locationX, int locationY, const std::string& fontName, int fontSize, bool fontBold, bool fontUnderline, bool fontItalic, bool fontStrikeout, std::string& outImagePath, std::string& errInfo); + // 去污 + int LocalImageDecontamination(const std::string& imagePath, const std::string mode, const std::string& color, + int x, int y, int width, int height, std::string& outImagePath, std::string& errInfo); // 上传文件 int UploadLocalFile(const std::string& filePath, const std::string& remoteFilePath, const std::string& uploadMode, const std::string &httpHost, int httpPort, const std::string& httpPath, const std::string &ftpUser, const std::string& ftpPassword, diff --git a/sdk/webservice/WSUser.cpp b/sdk/webservice/WSUser.cpp index b0e69ca9..1ecacba2 100644 --- a/sdk/webservice/WSUser.cpp +++ b/sdk/webservice/WSUser.cpp @@ -785,67 +785,125 @@ namespace ver_2 if (code == SANEEVENT_ARRIVE) { - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (p->m_initDeviceHaveIden) - fmt += "\"iden\":\"%s\", "; - fmt += "\"device_name\":\"%s\"}"; + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("device_arrive")); + if (p->m_initDeviceHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_initDeviceIden.c_str())); + cJSON_AddItemToObject(retJson, "device_name", cJSON_CreateString(str)); - char resp[1024]; - if (p->m_initDeviceHaveIden) - sprintf(resp, fmt.c_str(), "device_arrive", p->m_initDeviceIden.c_str(), str); - else - sprintf(resp, fmt.c_str(), "device_arrive", str); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); + } + + cJSON_Delete(retJson); + } } else if (code == SANEEVENT_REMOVE) { - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (p->m_initDeviceHaveIden) - fmt += "\"iden\":\"%s\", "; - fmt += "\"device_name\":\"%s\"}"; + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("device_remove")); + if (p->m_initDeviceHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_initDeviceIden.c_str())); + cJSON_AddItemToObject(retJson, "device_name", cJSON_CreateString(str)); - char resp[1024]; - if (p->m_initDeviceHaveIden) - sprintf(resp, fmt.c_str(), "device_remove", p->m_initDeviceIden.c_str(), str); - else - sprintf(resp, fmt.c_str(), "device_remove", str); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); + } + + cJSON_Delete(retJson); + } } else if (code == SANEEVENT_WORKING) { - char resp[1024]; - if (p->m_startScanHaveIden) - sprintf(resp, "{\"func\":\"%s\", \"iden\":\"%s\"}", "scan_begin", p->m_startScanIden.c_str()); - else - sprintf(resp, "{\"func\":\"%s\"}", "scan_begin"); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_begin")); + if (p->m_startScanHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str())); - if (p->m_startScanHaveIden) - sprintf(resp, "{\"func\":\"%s\", \"iden\":\"%s\", \"is_error\":%s, \"info\":\"%s\"}", - "scan_info", p->m_startScanIden.c_str(), err ? "true" : "false", str); - else - sprintf(resp, "{\"func\":\"%s\", \"is_error\":%s, \"info\":\"%s\"}", - "scan_info", err ? "true" : "false", str); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); + } + + cJSON_Delete(retJson); + } + + retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_info")); + if (p->m_startScanHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str())); + if (err) + cJSON_AddItemToObject(retJson, "is_error", cJSON_CreateTrue()); + else + cJSON_AddItemToObject(retJson, "is_error", cJSON_CreateFalse()); + cJSON_AddItemToObject(retJson, "info", cJSON_CreateString(str)); + + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); + } + + cJSON_Delete(retJson); + } } else if (code == SANEEVENT_FINISH) { - char resp[1024]; - if (p->m_startScanHaveIden) - sprintf(resp, "{\"func\":\"%s\", \"iden\":\"%s\", \"is_error\":%s, \"info\":\"%s\"}", - "scan_info", p->m_startScanIden.c_str(), err ? "true" : "false", str); - else - sprintf(resp, "{\"func\":\"%s\", \"is_error\":%s, \"info\":\"%s\"}", - "scan_info", err ? "true" : "false", str); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + cJSON *retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_info")); + if (p->m_startScanHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str())); + if (err) + cJSON_AddItemToObject(retJson, "is_error", cJSON_CreateTrue()); + else + cJSON_AddItemToObject(retJson, "is_error", cJSON_CreateFalse()); + cJSON_AddItemToObject(retJson, "info", cJSON_CreateString(str)); - if (p->m_startScanHaveIden) - sprintf(resp, "{\"func\":\"%s\", \"iden\":\"%s\"}", "scan_end", p->m_startScanIden.c_str()); - else - sprintf(resp, "{\"func\":\"%s\"}", "scan_end"); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); + } + + cJSON_Delete(retJson); + } + + retJson = cJSON_CreateObject(); + if (NULL != retJson) + { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_end")); + if (p->m_startScanHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str())); + + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); + } + + cJSON_Delete(retJson); + } } } @@ -860,65 +918,25 @@ namespace ver_2 p->GetManager()->LoadLocalImage(path, base64, errInfo); } - char* resp = new char[1024 + base64.size()]; - if (p->m_startScanHaveIden) + cJSON *retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("scan_image")); + if (p->m_startScanHaveIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(p->m_startScanIden.c_str())); + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(path).c_str())); if (p->m_startScanIsGetBase64) - sprintf(resp, "{\"func\":\"%s\", \"iden\":\"%s\", \"image_path\":\"%s\", \"image_base64\":\"%s\"}", - "scan_image", p->m_startScanIden.c_str(), StdStringToUtf8(strToJson(path)).c_str(), base64.c_str()); - else - sprintf(resp, "{\"func\":\"%s\", \"iden\":\"%s\", \"image_path\":\"%s\"}", - "scan_image", p->m_startScanIden.c_str(), StdStringToUtf8(strToJson(path)).c_str()); - } - else - { - if (p->m_startScanIsGetBase64) - sprintf(resp, "{\"func\":\"%s\", \"image_path\":\"%s\", \"image_base64\":\"%s\"}", - "scan_image", StdStringToUtf8(strToJson(path)).c_str(), base64.c_str()); - else - sprintf(resp, "{\"func\":\"%s\", \"image_path\":\"%s\"}", - "scan_image", StdStringToUtf8(strToJson(path)).c_str()); - } + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(base64.c_str())); - p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); - delete[] resp; - } - - std::string WSUser::strToJson(const std::string str) - { - std::string ret; - for (size_t i = 0; i < str.size(); i++) - { - char c = str[i]; - switch (c) + char* resp = cJSON_Print(retJson); + if (NULL != resp) { - case '\"': - ret.append("\\\""); - break; - case '\\': - ret.append("\\\\"); - break; - case '\b': - ret.append("\\b"); - break; - case '\f': - ret.append("\\f"); - break; - case '\n': - ret.append("\\n"); - break; - case '\r': - ret.append("\\r"); - break; - case '\t': - ret.append("\\t"); - break; - default: - ret.push_back(c); + p->PostEventMsg((const HGByte*)resp, (HGUInt)strlen(resp)); + free(resp); } - } - return ret; + cJSON_Delete(retJson); + } } bool WSUser::ShakeHand(const std::string& head) @@ -1058,37 +1076,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = {0}; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("set_global_config")); if (findIden) - sprintf(resp, fmt.c_str(), "set_global_config", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "set_global_config", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "set_global_config", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "set_global_config", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetGlobalConfig(cJSON* json) @@ -1102,48 +1108,35 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"file_save_path\":\"%s\", "; - fmt += "\"file_name_prefix\":\"%s\", "; - fmt += "\"file_name_mode\":\"%s\", "; - fmt += "\"image_format\":\"%s\", "; - fmt += "\"image_jpeg_quality\":%d, "; - fmt += "\"image_tiff_compression\":\"%s\", "; - fmt += "\"image_tiff_jpeg_quality\":%d}"; - } - - char resp[2048] = {0}; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_global_config")); if (findIden) - sprintf(resp, fmt.c_str(), "get_global_config", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "get_global_config", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_global_config", iden.c_str(), ret, StdStringToUtf8(strToJson(cfg.fileSavePath)).c_str(), - StdStringToUtf8(strToJson(cfg.fileNamePrefix)).c_str(), cfg.fileNameMode.c_str(), cfg.imageFormat.c_str(), cfg.imageJpegQuality, - cfg.imageTiffCompression.c_str(), cfg.imageTiffJpegQuality); - else - sprintf(resp, fmt.c_str(), "get_global_config", ret, StdStringToUtf8(strToJson(cfg.fileSavePath)).c_str(), - StdStringToUtf8(strToJson(cfg.fileNamePrefix)).c_str(), cfg.fileNameMode.c_str(), cfg.imageFormat.c_str(), cfg.imageJpegQuality, - cfg.imageTiffCompression.c_str(), cfg.imageTiffJpegQuality); - } + { + cJSON_AddItemToObject(retJson, "file_save_path", cJSON_CreateString(StdStringToUtf8(cfg.fileSavePath).c_str())); + cJSON_AddItemToObject(retJson, "file_name_prefix", cJSON_CreateString(StdStringToUtf8(cfg.fileNamePrefix).c_str())); + cJSON_AddItemToObject(retJson, "file_name_mode", cJSON_CreateString(cfg.fileNameMode.c_str())); + cJSON_AddItemToObject(retJson, "image_format", cJSON_CreateString(cfg.imageFormat.c_str())); + cJSON_AddItemToObject(retJson, "image_jpeg_quality", cJSON_CreateNumber(cfg.imageJpegQuality)); + cJSON_AddItemToObject(retJson, "image_tiff_compression", cJSON_CreateString(cfg.imageTiffCompression.c_str())); + cJSON_AddItemToObject(retJson, "image_tiff_jpeg_quality", cJSON_CreateNumber(cfg.imageTiffJpegQuality)); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::LoadLocalImage(cJSON* json) @@ -1159,39 +1152,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"image_base64\":\"%s\"}"; - } - - char* resp = new char[1024 + imageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("load_local_image")); if (findIden) - sprintf(resp, fmt.c_str(), "load_local_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "load_local_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "load_local_image", iden.c_str(), ret, imageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "load_local_image", ret, imageBase64.c_str()); - } + { + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(imageBase64.c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::SaveLocalImage(cJSON* json) @@ -1207,38 +1190,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"image_path\":\"%s\"}"; - } - - char resp[1024] = {0}; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("save_local_image")); if (findIden) - sprintf(resp, fmt.c_str(), "save_local_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "save_local_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "save_local_image", iden.c_str(), ret, StdStringToUtf8(strToJson(imagePath)).c_str()); - else - sprintf(resp, fmt.c_str(), "save_local_image", ret, StdStringToUtf8(strToJson(imagePath)).c_str()); - } + { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(imagePath).c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::DeleteLocalFile(cJSON* json) @@ -1253,37 +1227,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = {0}; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("delete_local_file")); if (findIden) - sprintf(resp, fmt.c_str(), "delete_local_file", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "delete_local_file", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "delete_local_file", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "delete_local_file", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ClearGlobalFileSavePath(cJSON* json) @@ -1296,37 +1258,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = {0}; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("clear_global_file_save_path")); if (findIden) - sprintf(resp, fmt.c_str(), "clear_global_file_save_path", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "clear_global_file_save_path", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "clear_global_file_save_path", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "clear_global_file_save_path", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::MergeLocalImage(cJSON* json) @@ -1363,59 +1313,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON *retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("merge_local_image")); if (findIden) - sprintf(resp, fmt.c_str(), "merge_local_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "merge_local_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "merge_local_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "merge_local_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "merge_local_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "merge_local_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char *resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::LocalMakeMultiImage(cJSON* json) @@ -1452,59 +1374,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("local_make_multi_image")); if (findIden) - sprintf(resp, fmt.c_str(), "local_make_multi_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "local_make_multi_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "local_make_multi_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_make_multi_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "local_make_multi_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_make_multi_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::SplitLocalImage(cJSON* json) @@ -1541,83 +1435,40 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path_list\":%s, "; - fmt += "\"image_base64_list\":%s}"; - } - else - { - fmt += "\"image_path_list\":%s}"; - } - } - - std::string pathList = "["; - for (int i = 0; i < (int)outImagePathList.size(); ++i) - { - pathList += "\""; - pathList += StdStringToUtf8(strToJson(outImagePathList[i])); - pathList += "\""; - if (i != (int)outImagePathList.size() - 1) - { - pathList += ", "; - } - } - pathList += "]"; - - std::string base64List = "["; - for (int i = 0; i < (int)outImageBase64List.size(); ++i) - { - base64List += "\""; - base64List += outImageBase64List[i]; - base64List += "\""; - if (i != (int)outImageBase64List.size() - 1) - { - base64List += ", "; - } - } - base64List += "]"; - - char* resp = new char[1024 + base64List.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("split_local_image")); if (findIden) - sprintf(resp, fmt.c_str(), "split_local_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "split_local_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "split_local_image", iden.c_str(), ret, pathList.c_str(), base64List.c_str()); - else - sprintf(resp, fmt.c_str(), "split_local_image", iden.c_str(), ret, pathList.c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { - if (getBase64) - sprintf(resp, fmt.c_str(), "split_local_image", ret, pathList.c_str(), base64List.c_str()); - else - sprintf(resp, fmt.c_str(), "split_local_image", ret, pathList.c_str()); - } - } + cJSON *imgPathList = cJSON_CreateArray(); + for (int i = 0; i < (int)outImagePathList.size(); ++i) + cJSON_AddItemToArray(imgPathList, cJSON_CreateString(StdStringToUtf8(outImagePathList[i]).c_str())); + cJSON_AddItemToObject(retJson, "image_path_list", imgPathList); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + if (getBase64) + { + cJSON* imgBase64List = cJSON_CreateArray(); + for (int i = 0; i < (int)outImageBase64List.size(); ++i) + cJSON_AddItemToArray(imgBase64List, cJSON_CreateString(outImageBase64List[i].c_str())); + cJSON_AddItemToObject(retJson, "image_base64_list", imgBase64List); + } + } + + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::LocalMakeZipFile(cJSON* json) @@ -1643,59 +1494,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"zip_path\":\"%s\", "; - fmt += "\"zip_base64\":\"%s\"}"; - } - else - { - fmt += "\"zip_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outZipBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("local_make_zip_file")); if (findIden) - sprintf(resp, fmt.c_str(), "local_make_zip_file", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "local_make_zip_file", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "local_make_zip_file", iden.c_str(), ret, StdStringToUtf8(strToJson(outZipPath)).c_str(), - outZipBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_make_zip_file", iden.c_str(), ret, StdStringToUtf8(strToJson(outZipPath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "zip_path", cJSON_CreateString(StdStringToUtf8(outZipPath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "local_make_zip_file", ret, StdStringToUtf8(strToJson(outZipPath)).c_str(), - outZipBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_make_zip_file", ret, StdStringToUtf8(strToJson(outZipPath)).c_str()); + cJSON_AddItemToObject(retJson, "zip_base64", cJSON_CreateString(outZipBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::LocalImageDeskew(cJSON* json) @@ -1719,59 +1542,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("local_image_deskew")); if (findIden) - sprintf(resp, fmt.c_str(), "local_image_deskew", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "local_image_deskew", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "local_image_deskew", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_image_deskew", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "local_image_deskew", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_image_deskew", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::LocalImageAddWatermark(cJSON* json) @@ -1826,59 +1621,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("local_image_add_watermark")); if (findIden) - sprintf(resp, fmt.c_str(), "local_image_add_watermark", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "local_image_add_watermark", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "local_image_add_watermark", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_image_add_watermark", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "local_image_add_watermark", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "local_image_add_watermark", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::UploadLocalFile(cJSON* json) @@ -1921,37 +1688,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("upload_local_file")); if (findIden) - sprintf(resp, fmt.c_str(), "upload_local_file", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "upload_local_file", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "upload_local_file", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "upload_local_file", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::InitDevice(cJSON* json) @@ -1975,37 +1730,25 @@ namespace ver_2 m_initDeviceHaveIden = false; } - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("init_device")); if (findIden) - sprintf(resp, fmt.c_str(), "init_device", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "init_device", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "init_device", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "init_device", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::DeinitDevice(cJSON* json) @@ -2021,37 +1764,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("deinit_device")); if (findIden) - sprintf(resp, fmt.c_str(), "deinit_device", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "deinit_device", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "deinit_device", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "deinit_device", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetDeviceNameList(cJSON* json) @@ -2065,51 +1796,32 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"device_name_list\":%s}"; - } - - std::string nameList = "["; - for (int i = 0; i < (int)devNameList.size(); ++i) - { - nameList += "\""; - nameList += devNameList[i]; - nameList += "\""; - if (i != (int)devNameList.size() - 1) + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_device_name_list")); + if (findIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); + else { - nameList += ", "; + cJSON* deviceNameList = cJSON_CreateArray(); + for (int i = 0; i < (int)devNameList.size(); ++i) + cJSON_AddItemToArray(deviceNameList, cJSON_CreateString(devNameList[i].c_str())); + cJSON_AddItemToObject(retJson, "device_name_list", deviceNameList); } - } - nameList += "]"; - char resp[1024] = { 0 }; - if (0 != ret) - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_device_name_list", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "get_device_name_list", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_device_name_list", iden.c_str(), ret, nameList.c_str()); - else - sprintf(resp, fmt.c_str(), "get_device_name_list", ret, nameList.c_str()); - } + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + cJSON_Delete(retJson); + } } void WSUser::OpenDevice(cJSON* json) @@ -2133,37 +1845,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("open_device")); if (findIden) - sprintf(resp, fmt.c_str(), "open_device", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "open_device", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "open_device", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "open_device", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::CloseDevice(cJSON* json) @@ -2176,37 +1876,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("close_device")); if (findIden) - sprintf(resp, fmt.c_str(), "close_device", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "close_device", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "close_device", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "close_device", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::SetDeviceParam(cJSON* json) @@ -2278,37 +1966,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("set_device_param")); if (findIden) - sprintf(resp, fmt.c_str(), "set_device_param", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "set_device_param", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "set_device_param", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "set_device_param", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetDeviceParam(cJSON* json) @@ -2322,167 +1998,118 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"device_param\":%s}"; - } - - std::string deviceParams = "["; - for (int k = 0; k < (int)devParams.size(); ++k) - { - std::string groupParams; - groupParams += "{\"group_name\":\""; - groupParams += devParams[k].groupName; - groupParams += "\", \"group_param\":["; - - for (int i = 0; i < (int)devParams[k].devParams.size(); ++i) + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_device_param")); + if (findIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); + else { - char param[1024] = { 0 }; - if (1 == devParams[k].devParams[i].valueType) + cJSON* deviceParams = cJSON_CreateArray(); + for (int k = 0; k < (int)devParams.size(); ++k) { - assert(1 == devParams[k].devParams[i].rangeType); - - std::string valueList = "["; - for (int j = 0; j < (int)devParams[k].devParams[i].stringValueList.size(); ++j) + cJSON* groupParams = cJSON_CreateObject(); + cJSON_AddItemToObject(groupParams, "group_name", cJSON_CreateString(devParams[k].groupName.c_str())); + cJSON* groupParam = cJSON_CreateArray(); + for (int i = 0; i < (int)devParams[k].devParams.size(); ++i) { - valueList += "\""; - valueList += devParams[k].devParams[i].stringValueList[j]; - valueList += "\""; + cJSON* param = cJSON_CreateObject(); + cJSON_AddItemToObject(param, "name", cJSON_CreateString(devParams[k].devParams[i].title.c_str())); - if (j != (int)devParams[k].devParams[i].stringValueList.size() - 1) + if (1 == devParams[k].devParams[i].valueType) { - valueList += ", "; + assert(1 == devParams[k].devParams[i].rangeType); + cJSON_AddItemToObject(param, "value_type", cJSON_CreateString("string")); + cJSON_AddItemToObject(param, "value", cJSON_CreateString(devParams[k].devParams[i].stringValue.c_str())); + + cJSON* valueList = cJSON_CreateArray(); + for (int j = 0; j < (int)devParams[k].devParams[i].stringValueList.size(); ++j) + cJSON_AddItemToArray(valueList, cJSON_CreateString(devParams[k].devParams[i].stringValueList[j].c_str())); + cJSON_AddItemToObject(param, "range_type", cJSON_CreateString("list")); + cJSON_AddItemToObject(param, "value_list", valueList); } - } - valueList += "]"; - - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"string\", \"value\":\"%s\", \"range_type\":\"list\", \"value_list\":%s}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].stringValue.c_str(), valueList.c_str()); - } - else if (2 == devParams[k].devParams[i].valueType) - { - if (2 == devParams[k].devParams[i].rangeType) - { - std::string valueList = "["; - for (int j = 0; j < (int)devParams[k].devParams[i].intValueList.size(); ++j) + else if (2 == devParams[k].devParams[i].valueType) { - char v[32] = { 0 }; - sprintf(v, "%d", devParams[k].devParams[i].intValueList[j]); - valueList += v; + cJSON_AddItemToObject(param, "value_type", cJSON_CreateString("int")); + cJSON_AddItemToObject(param, "value", cJSON_CreateNumber(devParams[k].devParams[i].intValue)); - if (j != (int)devParams[k].devParams[i].intValueList.size() - 1) + if (2 == devParams[k].devParams[i].rangeType) { - valueList += ", "; + cJSON* valueList = cJSON_CreateArray(); + for (int j = 0; j < (int)devParams[k].devParams[i].intValueList.size(); ++j) + cJSON_AddItemToArray(valueList, cJSON_CreateNumber(devParams[k].devParams[i].intValueList[j])); + cJSON_AddItemToObject(param, "range_type", cJSON_CreateString("list")); + cJSON_AddItemToObject(param, "value_list", valueList); + } + else if (4 == devParams[k].devParams[i].rangeType) + { + cJSON_AddItemToObject(param, "range_type", cJSON_CreateString("min_max")); + cJSON_AddItemToObject(param, "value_min", cJSON_CreateNumber(devParams[k].devParams[i].intValueMin)); + cJSON_AddItemToObject(param, "value_max", cJSON_CreateNumber(devParams[k].devParams[i].intValueMax)); + } + else + { + assert(0 == devParams[k].devParams[i].rangeType); } } - valueList += "]"; - - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"int\", \"value\":%d, \"range_type\":\"list\", \"value_list\":%s}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].intValue, valueList.c_str()); - } - else if (4 == devParams[k].devParams[i].rangeType) - { - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"int\", \"value\":%d, \"range_type\":\"min_max\", \"value_min\":%d, \"value_max\":%d}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].intValue, - devParams[k].devParams[i].intValueMin, devParams[k].devParams[i].intValueMax); - } - else - { - assert(0 == devParams[k].devParams[i].rangeType); - - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"int\", \"value\":%d}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].intValue); - } - } - else if (3 == devParams[k].devParams[i].valueType) - { - if (3 == devParams[k].devParams[i].rangeType) - { - std::string valueList = "["; - for (int j = 0; j < (int)devParams[k].devParams[i].doubleValueList.size(); ++j) + else if (3 == devParams[k].devParams[i].valueType) { - char v[32] = { 0 }; - sprintf(v, "%f", devParams[k].devParams[i].doubleValueList[j]); - valueList += v; + cJSON_AddItemToObject(param, "value_type", cJSON_CreateString("double")); + cJSON_AddItemToObject(param, "value", cJSON_CreateNumber(devParams[k].devParams[i].doubleValue)); - if (j != (int)devParams[k].devParams[i].doubleValueList.size() - 1) + if (3 == devParams[k].devParams[i].rangeType) { - valueList += ", "; + cJSON* valueList = cJSON_CreateArray(); + for (int j = 0; j < (int)devParams[k].devParams[i].doubleValueList.size(); ++j) + cJSON_AddItemToArray(valueList, cJSON_CreateNumber(devParams[k].devParams[i].doubleValueList[j])); + cJSON_AddItemToObject(param, "range_type", cJSON_CreateString("list")); + cJSON_AddItemToObject(param, "value_list", valueList); + } + else if (5 == devParams[k].devParams[i].rangeType) + { + cJSON_AddItemToObject(param, "range_type", cJSON_CreateString("min_max")); + cJSON_AddItemToObject(param, "value_min", cJSON_CreateNumber(devParams[k].devParams[i].doubleValueMin)); + cJSON_AddItemToObject(param, "value_max", cJSON_CreateNumber(devParams[k].devParams[i].doubleValueMax)); + } + else + { + assert(0 == devParams[k].devParams[i].rangeType); } } - valueList += "]"; + else + { + assert(4 == devParams[k].devParams[i].valueType); + assert(0 == devParams[k].devParams[i].rangeType); - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"double\", \"value\":%f, \"range_type\":\"list\", \"value_list\":%s}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].doubleValue, valueList.c_str()); + cJSON_AddItemToObject(param, "value_type", cJSON_CreateString("bool")); + if (devParams[k].devParams[i].boolValue) + cJSON_AddItemToObject(param, "value", cJSON_CreateTrue()); + else + cJSON_AddItemToObject(param, "value", cJSON_CreateFalse()); + } + + cJSON_AddItemToArray(groupParam, param); } - else if (5 == devParams[k].devParams[i].rangeType) - { - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"double\", \"value\":%f, \"range_type\":\"min_max\", \"value_min\":%f, \"value_max\":%f}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].doubleValue, - devParams[k].devParams[i].doubleValueMin, devParams[k].devParams[i].doubleValueMax); - } - else - { - assert(0 == devParams[k].devParams[i].rangeType); + cJSON_AddItemToObject(groupParams, "group_param", groupParam); - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"double\", \"value\":%f}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].doubleValue); - } - } - else - { - assert(4 == devParams[k].devParams[i].valueType); - assert(0 == devParams[k].devParams[i].rangeType); - - sprintf(param, "{\"name\":\"%s\", \"value_type\":\"bool\", \"value\":%s}", - devParams[k].devParams[i].title.c_str(), devParams[k].devParams[i].boolValue ? "true" : "false"); - } - - groupParams += param; - if (i != (int)devParams[k].devParams.size() - 1) - { - groupParams += ", "; + cJSON_AddItemToArray(deviceParams, groupParams); } + cJSON_AddItemToObject(retJson, "device_param", deviceParams); } - groupParams += "]}"; - deviceParams += groupParams; - - if (k != (int)devParams.size() - 1) + char* resp = cJSON_Print(retJson); + if (NULL != resp) { - deviceParams += ", "; + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); } - } - deviceParams += "]"; - char *resp = new char [1024 + deviceParams.size()] ; - if (0 != ret) - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_device_param", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "get_device_param", ret, StdStringToUtf8(errInfo).c_str()); + cJSON_Delete(retJson); } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_device_param", iden.c_str(), ret, deviceParams.c_str()); - else - sprintf(resp, fmt.c_str(), "get_device_param", ret, deviceParams.c_str()); - } - - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; } void WSUser::ResetDeviceParam(cJSON* json) @@ -2495,37 +2122,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("reset_device_param")); if (findIden) - sprintf(resp, fmt.c_str(), "reset_device_param", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "reset_device_param", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "reset_device_param", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "reset_device_param", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetCurrDeviceName(cJSON* json) @@ -2539,38 +2154,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"device_name\":\"%s\"}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_curr_device_name")); if (findIden) - sprintf(resp, fmt.c_str(), "get_curr_device_name", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "get_curr_device_name", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_curr_device_name", iden.c_str(), ret, devName.c_str()); - else - sprintf(resp, fmt.c_str(), "get_curr_device_name", ret, devName.c_str()); - } + { + cJSON_AddItemToObject(retJson, "device_name", cJSON_CreateString(devName.c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::StartScan(cJSON* json) @@ -2597,37 +2203,25 @@ namespace ver_2 m_startScanIsGetBase64 = false; } - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("start_scan")); if (findIden) - sprintf(resp, fmt.c_str(), "start_scan", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "start_scan", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "start_scan", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "start_scan", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::StopScan(cJSON* json) @@ -2644,37 +2238,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("stop_scan")); if (findIden) - sprintf(resp, fmt.c_str(), "stop_scan", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "stop_scan", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "stop_scan", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "stop_scan", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetBatchIdList(cJSON* json) @@ -2688,52 +2270,32 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"batch_id_list\":%s}"; - } - - std::string idList = "["; - for (int i = 0; i < (int)batchIdList.size(); ++i) - { - idList += "\""; - idList += batchIdList[i]; - idList += "\""; - if (i != (int)batchIdList.size() - 1) + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_batch_id_list")); + if (findIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); + else { - idList += ", "; + cJSON* idList = cJSON_CreateArray(); + for (int i = 0; i < (int)batchIdList.size(); ++i) + cJSON_AddItemToArray(idList, cJSON_CreateString(batchIdList[i].c_str())); + cJSON_AddItemToObject(retJson, "batch_id_list", idList); } - } - idList += "]"; - char *resp = new char[1024 + idList.size()]; - if (0 != ret) - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_batch_id_list", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "get_batch_id_list", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_batch_id_list", iden.c_str(), ret, idList.c_str()); - else - sprintf(resp, fmt.c_str(), "get_batch_id_list", ret, idList.c_str()); - } + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + cJSON_Delete(retJson); + } } void WSUser::OpenBatch(cJSON* json) @@ -2758,37 +2320,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("open_batch")); if (findIden) - sprintf(resp, fmt.c_str(), "open_batch", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "open_batch", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "open_batch", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "open_batch", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::DeleteBatch(cJSON* json) @@ -2803,37 +2353,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("delete_batch")); if (findIden) - sprintf(resp, fmt.c_str(), "delete_batch", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "delete_batch", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "delete_batch", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "delete_batch", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::NewBatch(cJSON* json) @@ -2872,38 +2410,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"batch_id\":\"%s\"}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("new_batch")); if (findIden) - sprintf(resp, fmt.c_str(), "new_batch", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "new_batch", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "new_batch", iden.c_str(), ret, newBatchId.c_str()); - else - sprintf(resp, fmt.c_str(), "new_batch", ret, newBatchId.c_str()); - } + { + cJSON_AddItemToObject(retJson, "batch_id", cJSON_CreateString(newBatchId.c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetCurrBatchId(cJSON* json) @@ -2917,38 +2446,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"batch_id\":\"%s\"}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_curr_batch_id")); if (findIden) - sprintf(resp, fmt.c_str(), "get_curr_batch_id", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "get_curr_batch_id", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_curr_batch_id", iden.c_str(), ret, batchId.c_str()); - else - sprintf(resp, fmt.c_str(), "get_curr_batch_id", ret, batchId.c_str()); - } + { + cJSON_AddItemToObject(retJson, "batch_id", cJSON_CreateString(batchId.c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ModifyBatchId(cJSON* json) @@ -2971,37 +2491,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("modify_batch_id")); if (findIden) - sprintf(resp, fmt.c_str(), "modify_batch_id", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "modify_batch_id", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "modify_batch_id", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "modify_batch_id", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::BindFolder(cJSON* json) @@ -3029,37 +2537,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("bind_folder")); if (findIden) - sprintf(resp, fmt.c_str(), "bind_folder", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "bind_folder", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "bind_folder", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "bind_folder", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::StopBindFolder(cJSON* json) @@ -3072,37 +2568,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("stop_bind_folder")); if (findIden) - sprintf(resp, fmt.c_str(), "stop_bind_folder", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "stop_bind_folder", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "stop_bind_folder", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "stop_bind_folder", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::GetImageThumbnailList(cJSON* json) @@ -3116,55 +2600,38 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"image_thumbnail_list\":%s}"; - } - - std::string thumbList = "["; - for (int i = 0; i < (int)imageThumbList.size(); ++i) - { - thumbList += "{\"image_tag\":\""; - thumbList += imageThumbList[i].tag; - thumbList += "\", \"image_base64\":\""; - thumbList += imageThumbList[i].thumbBase64; - thumbList += "\"}"; - - if (i != (int)imageThumbList.size() - 1) + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_image_thumbnail_list")); + if (findIden) + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); + else { - thumbList += ", "; + cJSON* thumbList = cJSON_CreateArray(); + for (int i = 0; i < (int)imageThumbList.size(); ++i) + { + cJSON* thumb = cJSON_CreateObject(); + cJSON_AddItemToObject(thumb, "image_tag", cJSON_CreateString(imageThumbList[i].tag.c_str())); + cJSON_AddItemToObject(thumb, "image_base64", cJSON_CreateString(imageThumbList[i].thumbBase64.c_str())); + cJSON_AddItemToArray(thumbList, thumb); + } + + cJSON_AddItemToObject(retJson, "image_thumbnail_list", thumbList); } - } - thumbList += "]"; - char* resp = new char[1024 + thumbList.size()]; - if (0 != ret) - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_image_thumbnail_list", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "get_image_thumbnail_list", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_image_thumbnail_list", iden.c_str(), ret, thumbList.c_str()); - else - sprintf(resp, fmt.c_str(), "get_image_thumbnail_list", ret, thumbList.c_str()); - } + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + cJSON_Delete(retJson); + } } void WSUser::GetImageCount(cJSON* json) @@ -3178,38 +2645,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"image_count\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("get_image_count")); if (findIden) - sprintf(resp, fmt.c_str(), "get_image_count", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "get_image_count", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "get_image_count", iden.c_str(), ret, imageCount); - else - sprintf(resp, fmt.c_str(), "get_image_count", ret, imageCount); - } + { + cJSON_AddItemToObject(retJson, "image_count", cJSON_CreateNumber(imageCount)); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::LoadImage(cJSON* json) @@ -3225,40 +2683,30 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"image_tag\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - - char *resp = new char [1024 + imageTag.size() + imageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("load_image")); if (findIden) - sprintf(resp, fmt.c_str(), "load_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "load_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "load_image", iden.c_str(), ret, imageTag.c_str(), imageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "load_image", ret, imageTag.c_str(), imageBase64.c_str()); - } + { + cJSON_AddItemToObject(retJson, "image_tag", cJSON_CreateString(imageTag.c_str())); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(imageBase64.c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::SaveImage(cJSON* json) @@ -3274,38 +2722,29 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - fmt += "\"image_path\":\"%s\"}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("save_image")); if (findIden) - sprintf(resp, fmt.c_str(), "save_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else - sprintf(resp, fmt.c_str(), "save_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "save_image", iden.c_str(), ret, StdStringToUtf8(strToJson(imagePath)).c_str()); - else - sprintf(resp, fmt.c_str(), "save_image", ret, StdStringToUtf8(strToJson(imagePath)).c_str()); - } + { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(imagePath).c_str())); + } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::InsertLocalImage(cJSON* json) @@ -3327,37 +2766,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("insert_local_image")); if (findIden) - sprintf(resp, fmt.c_str(), "insert_local_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "insert_local_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "insert_local_image", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "insert_local_image", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::InsertImage(cJSON* json) @@ -3379,37 +2806,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("insert_image")); if (findIden) - sprintf(resp, fmt.c_str(), "insert_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "insert_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "insert_image", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "insert_image", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ModifyImageTag(cJSON* json) @@ -3425,37 +2840,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("modify_image_tag")); if (findIden) - sprintf(resp, fmt.c_str(), "modify_image_tag", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "modify_image_tag", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "modify_image_tag", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "modify_image_tag", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::DeleteImage(cJSON* json) @@ -3470,37 +2873,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("delete_image")); if (findIden) - sprintf(resp, fmt.c_str(), "delete_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "delete_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "delete_image", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "delete_image", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ClearImageList(cJSON* json) @@ -3513,37 +2904,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("clear_image_list")); if (findIden) - sprintf(resp, fmt.c_str(), "clear_image_list", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "clear_image_list", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "clear_image_list", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "clear_image_list", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ModifyImage(cJSON* json) @@ -3559,37 +2938,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("modify_image")); if (findIden) - sprintf(resp, fmt.c_str(), "modify_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "modify_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "modify_image", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "modify_image", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ModifyImageByLocal(cJSON* json) @@ -3605,37 +2972,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("modify_image_by_local")); if (findIden) - sprintf(resp, fmt.c_str(), "modify_image_by_local", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "modify_image_by_local", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "modify_image_by_local", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "modify_image_by_local", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::MoveImage(cJSON* json) @@ -3657,37 +3012,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("move_image")); if (findIden) - sprintf(resp, fmt.c_str(), "move_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "move_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "move_image", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "move_image", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ExchangeImage(cJSON* json) @@ -3703,37 +3046,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024] = { 0 }; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("exchange_image")); if (findIden) - sprintf(resp, fmt.c_str(), "exchange_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "exchange_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "exchange_image", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "exchange_image", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ImageBookSort(cJSON* json) @@ -3746,37 +3077,25 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d}"; - } - - char resp[1024]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("image_book_sort")); if (findIden) - sprintf(resp, fmt.c_str(), "image_book_sort", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "image_book_sort", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - sprintf(resp, fmt.c_str(), "image_book_sort", iden.c_str(), ret); - else - sprintf(resp, fmt.c_str(), "image_book_sort", ret); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::MergeImage(cJSON* json) @@ -3811,59 +3130,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("merge_image")); if (findIden) - sprintf(resp, fmt.c_str(), "merge_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "merge_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "merge_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "merge_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "merge_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "merge_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::MakeMultiImage(cJSON* json) @@ -3898,59 +3189,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("make_multi_image")); if (findIden) - sprintf(resp, fmt.c_str(), "make_multi_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "make_multi_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "make_multi_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "make_multi_image", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "make_multi_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "make_multi_image", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::SplitImage(cJSON* json) @@ -3987,83 +3250,40 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path_list\":%s, "; - fmt += "\"image_base64_list\":%s}"; - } - else - { - fmt += "\"image_path_list\":%s}"; - } - } - - std::string pathList = "["; - for (int i = 0; i < (int)outImagePathList.size(); ++i) - { - pathList += "\""; - pathList += StdStringToUtf8(strToJson(outImagePathList[i])); - pathList += "\""; - if (i != (int)outImagePathList.size() - 1) - { - pathList += ", "; - } - } - pathList += "]"; - - std::string base64List = "["; - for (int i = 0; i < (int)outImageBase64List.size(); ++i) - { - base64List += "\""; - base64List += outImageBase64List[i]; - base64List += "\""; - if (i != (int)outImageBase64List.size() - 1) - { - base64List += ", "; - } - } - base64List += "]"; - - char* resp = new char[1024 + base64List.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("split_image")); if (findIden) - sprintf(resp, fmt.c_str(), "split_image", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "split_image", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "split_image", iden.c_str(), ret, pathList.c_str(), base64List.c_str()); - else - sprintf(resp, fmt.c_str(), "split_image", iden.c_str(), ret, pathList.c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { - if (getBase64) - sprintf(resp, fmt.c_str(), "split_image", ret, pathList.c_str(), base64List.c_str()); - else - sprintf(resp, fmt.c_str(), "split_image", ret, pathList.c_str()); - } - } + cJSON* imgPathList = cJSON_CreateArray(); + for (int i = 0; i < (int)outImagePathList.size(); ++i) + cJSON_AddItemToArray(imgPathList, cJSON_CreateString(StdStringToUtf8(outImagePathList[i]).c_str())); + cJSON_AddItemToObject(retJson, "image_path_list", imgPathList); - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + if (getBase64) + { + cJSON* imgBase64List = cJSON_CreateArray(); + for (int i = 0; i < (int)outImageBase64List.size(); ++i) + cJSON_AddItemToArray(imgBase64List, cJSON_CreateString(outImageBase64List[i].c_str())); + cJSON_AddItemToObject(retJson, "image_base64_list", imgBase64List); + } + } + + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::MakeZipFile(cJSON* json) @@ -4086,59 +3306,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"zip_path\":\"%s\", "; - fmt += "\"zip_base64\":\"%s\"}"; - } - else - { - fmt += "\"zip_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outZipBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("make_zip_file")); if (findIden) - sprintf(resp, fmt.c_str(), "make_zip_file", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "make_zip_file", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "make_zip_file", iden.c_str(), ret, StdStringToUtf8(strToJson(outZipPath)).c_str(), - outZipBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "make_zip_file", iden.c_str(), ret, StdStringToUtf8(strToJson(outZipPath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "zip_path", cJSON_CreateString(StdStringToUtf8(outZipPath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "make_zip_file", ret, StdStringToUtf8(strToJson(outZipPath)).c_str(), - outZipBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "make_zip_file", ret, StdStringToUtf8(strToJson(outZipPath)).c_str()); + cJSON_AddItemToObject(retJson, "zip_base64", cJSON_CreateString(outZipBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ImageDeskew(cJSON* json) @@ -4162,59 +3354,31 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("image_deskew")); if (findIden) - sprintf(resp, fmt.c_str(), "image_deskew", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "image_deskew", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "image_deskew", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "image_deskew", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "image_deskew", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "image_deskew", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } void WSUser::ImageAddWatermark(cJSON* json) @@ -4269,58 +3433,30 @@ namespace ver_2 bool findIden = false; std::string iden = GetJsonStringValue(json, "iden", &findIden); - std::string fmt; - fmt += "{\"func\":\"%s\", "; - if (findIden) - fmt += "\"iden\":\"%s\", "; - if (0 != ret) - { - fmt += "\"ret\":%d, "; - fmt += "\"err_info\":\"%s\"}"; - } - else - { - fmt += "\"ret\":%d, "; - if (getBase64) - { - fmt += "\"image_path\":\"%s\", "; - fmt += "\"image_base64\":\"%s\"}"; - } - else - { - fmt += "\"image_path\":\"%s\"}"; - } - } - - char* resp = new char[1024 + outImageBase64.size()]; - if (0 != ret) + cJSON* retJson = cJSON_CreateObject(); + if (NULL != retJson) { + cJSON_AddItemToObject(retJson, "func", cJSON_CreateString("image_add_watermark")); if (findIden) - sprintf(resp, fmt.c_str(), "image_add_watermark", iden.c_str(), ret, StdStringToUtf8(errInfo).c_str()); - else - sprintf(resp, fmt.c_str(), "image_add_watermark", ret, StdStringToUtf8(errInfo).c_str()); - } - else - { - if (findIden) - { - if (getBase64) - sprintf(resp, fmt.c_str(), "image_add_watermark", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "image_add_watermark", iden.c_str(), ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); - } + cJSON_AddItemToObject(retJson, "iden", cJSON_CreateString(iden.c_str())); + cJSON_AddItemToObject(retJson, "ret", cJSON_CreateNumber(ret)); + if (0 != ret) + cJSON_AddItemToObject(retJson, "err_info", cJSON_CreateString(StdStringToUtf8(errInfo).c_str())); else { + cJSON_AddItemToObject(retJson, "image_path", cJSON_CreateString(StdStringToUtf8(outImagePath).c_str())); if (getBase64) - sprintf(resp, fmt.c_str(), "image_add_watermark", ret, StdStringToUtf8(strToJson(outImagePath)).c_str(), - outImageBase64.c_str()); - else - sprintf(resp, fmt.c_str(), "image_add_watermark", ret, StdStringToUtf8(strToJson(outImagePath)).c_str()); + cJSON_AddItemToObject(retJson, "image_base64", cJSON_CreateString(outImageBase64.c_str())); } - } - SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); - delete[] resp; + char* resp = cJSON_Print(retJson); + if (NULL != resp) + { + SendResponse((const HGByte*)resp, (HGUInt)strlen(resp), HGTRUE); + free(resp); + } + + cJSON_Delete(retJson); + } } } \ No newline at end of file diff --git a/sdk/webservice/WSUser.h b/sdk/webservice/WSUser.h index 13d82dd7..4ca00706 100644 --- a/sdk/webservice/WSUser.h +++ b/sdk/webservice/WSUser.h @@ -28,7 +28,6 @@ namespace ver_2 private: static void SaneEvent2(int code, const char* str, bool err, void* param); static void SaneImageCallback2(const char* path, void* param); - static std::string strToJson(const std::string str); bool ShakeHand(const std::string& head); void Pong(); bool SendResponse(const HGByte* data, HGUInt size, HGBool text);