From 9a4ba373acf7b7feac6d980506bcdad20b96bdb6 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Mon, 11 Dec 2017 13:35:48 +0100 Subject: Check key exists before loading JSON file Change-Id: I99d84fb56b01896caf6daa26ca50896f770ff509 Signed-off-by: Romain Forlot --- .../signal-composer-binding.cpp | 43 +++++++++++++--------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/signal-composer-binding/signal-composer-binding.cpp b/signal-composer-binding/signal-composer-binding.cpp index 55c11fe..a155062 100644 --- a/signal-composer-binding/signal-composer-binding.cpp +++ b/signal-composer-binding/signal-composer-binding.cpp @@ -168,30 +168,37 @@ void loadConf(afb_req request) Composer& composer = Composer::instance(); json_object *sourcesJ = nullptr, *signalsJ = nullptr; - const char* filepath = afb_req_value(request, "filepath"); + const char* filepath = afb_req_value(request, "file"); - json_object *fileJ = json_object_from_file(filepath); + if(filepath) + { + json_object *fileJ = json_object_from_file(filepath); - json_object_object_get_ex(fileJ, "sources", &sourcesJ); - json_object_object_get_ex(fileJ, "signals", &signalsJ); + json_object_object_get_ex(fileJ, "sources", &sourcesJ); + json_object_object_get_ex(fileJ, "signals", &signalsJ); - if( sourcesJ && composer.loadSources(sourcesJ)) - { - afb_req_fail_f(request, "Loading 'sources' configuration or subscription error", "Error code: -1"); - json_object_put(fileJ); - return; - } - if(signalsJ && composer.loadSignals(signalsJ)) - { - afb_req_fail_f(request, "Loading 'signals' configuration or subscription error", "Error code: -1"); + if( sourcesJ && composer.loadSources(sourcesJ)) + { + afb_req_fail_f(request, "Loading 'sources' configuration or subscription error", "Error code: -2"); + json_object_put(fileJ); + return; + } + if(signalsJ) + { + if(!composer.loadSignals(signalsJ)) + {composer.initSignals();} + else + { + afb_req_fail_f(request, "Loading 'signals' configuration or subscription error", "Error code: -2"); + json_object_put(fileJ); + return; + } + } json_object_put(fileJ); - return; + afb_req_success(request, NULL, NULL); } else - {composer.initSignals();} - - json_object_put(fileJ); - afb_req_success(request, NULL, NULL); + {afb_req_fail_f(request, "No 'file' key found in request argument", "Error code: -1");} } /// @brief entry point to list available signals -- cgit 1.2.3-korg