]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10690: [libblade] [libks] Added json wrapper to string builder. Fixed an issue...
authorShane Bryldt <astaelan@gmail.com>
Fri, 6 Oct 2017 18:44:10 +0000 (12:44 -0600)
committerShane Bryldt <astaelan@gmail.com>
Fri, 6 Oct 2017 18:44:10 +0000 (12:44 -0600)
libs/libblade/src/blade_restmgr.c
libs/libblade/switchblade/switchblade.c
libs/libblade/switchblade/switchblade.vcxproj
libs/libblade/test/testcli.vcxproj
libs/libblade/test/testcon.vcxproj
libs/libks/src/include/ks_sb.h
libs/libks/src/ks_sb.c

index 9c241e3ef7df11cc1f9d2371445dea4afc95a461..69d4551017ae968ed9ea74f7a116028ac576f78a 100644 (file)
@@ -106,9 +106,9 @@ void blade_restmgr_handle_exit_context(const struct mg_context *ctx);
 
 static void blade_restmgr_cleanup(void *ptr, void *arg, ks_pool_cleanup_action_t action, ks_pool_cleanup_type_t type)
 {
-       blade_restmgr_t *brestmgr = (blade_restmgr_t *)ptr;
+       //blade_restmgr_t *brestmgr = (blade_restmgr_t *)ptr;
 
-       ks_assert(brestmgr);
+       //ks_assert(brestmgr);
 
        switch (action) {
        case KS_MPCL_ANNOUNCE:
index e18dff0b80c5fda73c79cbea36d4435f80004fa3..5c4b89c70ed80384316b88ca69ae4a4aa503837e 100644 (file)
@@ -140,15 +140,23 @@ void command_quit(blade_handle_t *bh, char *args)
 int rest_service_test(blade_restmgr_t *brestmgr, struct mg_connection *conn, const char **captures)
 {
        const struct mg_request_info *info = NULL;
+       cJSON *json = NULL;
+       cJSON *json_captures = NULL;
        ks_sb_t *sb = NULL;
 
+       json = cJSON_CreateObject();
+
        ks_sb_create(&sb, NULL, 0);
 
        info = mg_get_request_info(conn);
 
-       ks_sb_printf(sb, "Method: %s\n", info->request_method);
+       cJSON_AddStringToObject(json, "method", info->request_method);
+
+       cJSON_AddItemToObject(json, "captures", (json_captures = cJSON_CreateArray()));
 
-       for (int i = 0; captures[i]; ++i) ks_sb_printf(sb, "Capture #%d: %s\n", i, captures[i]);
+       for (int i = 0; captures[i]; ++i) cJSON_AddItemToArray(json_captures, cJSON_CreateString(captures[i]));
+
+       ks_sb_json(sb, json);
 
        mg_printf(conn,
                "HTTP/1.1 200 OK\r\n"
@@ -161,6 +169,8 @@ int rest_service_test(blade_restmgr_t *brestmgr, struct mg_connection *conn, con
 
        ks_sb_destroy(&sb);
 
+       cJSON_Delete(json);
+
        return 200;
 }
 
index de2fb48c5f65c5af3a37ab45dfcbb87b2ec05ddf..0eb09f50e86fa900f96a1b9e0fb4de92fa4223e0 100644 (file)
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;KS_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>$(SolutionDir)..\win32\openssl\include;$(SolutionDir)..\win32\openssl\include_x64;../src/include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>4090</DisableSpecificWarnings>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;rpcrt4.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
index 381d842a124bff8e44db5d4d9012a591c7f8e4b0..a0c687a67e6cdbbd31cd51cad6ceaa9db4712e6a 100644 (file)
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;KS_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>$(SolutionDir)..\win32\openssl\include;$(SolutionDir)..\win32\openssl\include_x64;../src/include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>4090</DisableSpecificWarnings>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;rpcrt4.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
index ffa9af660d113f36deea418beb045fb8e96503c5..513324ec6907ca71e81e9e127bdca5f94b371026 100644 (file)
       <Optimization>MaxSpeed</Optimization>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NDEBUG;_CONSOLE;KS_DECLARE_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SDLCheck>true</SDLCheck>
       <AdditionalIncludeDirectories>$(SolutionDir)..\win32\openssl\include;$(SolutionDir)..\win32\openssl\include_x64;../src/include;.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <DisableSpecificWarnings>4090</DisableSpecificWarnings>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;rpcrt4.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
index b9b5f1863f3a289bc58eebf395d15946fea2aae5..e82da02ca08559ee959fa28611c5bcd5c0983056 100644 (file)
@@ -48,6 +48,7 @@ KS_DECLARE(ks_status_t) ks_sb_accommodate(ks_sb_t *sb, ks_size_t len);
 KS_DECLARE(ks_status_t) ks_sb_append(ks_sb_t *sb, const char *str);
 KS_DECLARE(ks_status_t) ks_sb_append_ex(ks_sb_t *sb, const char *str, ks_size_t len);
 KS_DECLARE(ks_status_t) ks_sb_printf(ks_sb_t *sb, const char *fmt, ...);
+KS_DECLARE(ks_status_t) ks_sb_json(ks_sb_t *sb, const cJSON *json);
 
 KS_END_EXTERN_C
 
index acdbb594c0e32349ab82cbcfc807c51a8713a608..19219b372daa1cc7306d1545f9c6a28ad5b196b5 100644 (file)
@@ -191,6 +191,28 @@ done:
        return ret;
 }
 
+KS_DECLARE(ks_status_t) ks_sb_json(ks_sb_t *sb, const cJSON *json)
+{
+       ks_status_t ret = KS_STATUS_SUCCESS;
+       char *str = NULL;
+
+       ks_assert(sb);
+       ks_assert(json);
+
+       str = cJSON_Print(json);
+       if (!str) {
+               ret = KS_STATUS_FAIL;
+               goto done;
+       }
+
+       ks_sb_append(sb, str);
+
+done:
+       if (str) free(str);
+
+       return ret;
+}
+
 
 /* For Emacs:
  * Local Variables: