From 0249030fb60093ff7d8e6e5f7d9d8ce69233f0ac Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Tue, 4 Dec 2018 12:22:57 +0100 Subject: Handle number and boolean to subcall an api's verb An improvment was made to handle string for synchronous subcalls and now it handles also number and boolean for both sync and async subcalls. Change-Id: Iafaf9d01b8abd83423b1809a9e0e5433d44d6ded Signed-off-by: Romain Forlot --- ctl-lib/ctl-lua.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ctl-lib/ctl-lua.c b/ctl-lib/ctl-lua.c index 08c9b85..b61885d 100644 --- a/ctl-lib/ctl-lua.c +++ b/ctl-lib/ctl-lua.c @@ -470,7 +470,7 @@ static int LuaAfbService(lua_State* luaState) { // get api/verb+query const char *api = lua_tostring(luaState, 3); const char *verb = lua_tostring(luaState, 4); - json_object *queryJ = LuaTableToJson(source, luaState, 5); + json_object *queryJ = LuaPopOneArg(source, luaState, LUA_FIRST_ARG + 3); if (queryJ == JSON_ERROR) return 1; LuaCbHandleT *handleCb = calloc(1, sizeof (LuaCbHandleT)); @@ -498,7 +498,9 @@ static int LuaAfbServiceSync(lua_State* luaState) { } // note: argument start at 2 because of AFB: table - if (count != 5 || !lua_isstring(luaState, LUA_FIRST_ARG + 1) || !lua_isstring(luaState, LUA_FIRST_ARG + 2) || (!lua_istable(luaState, LUA_FIRST_ARG + 3) && !lua_isstring(luaState, LUA_FIRST_ARG +3))) { + if (count != 5 || + ! lua_isstring(luaState, LUA_FIRST_ARG + 1) || + ! lua_isstring(luaState, LUA_FIRST_ARG + 2)) { lua_pushliteral(luaState, "ERROR: syntax AFB:servsync(source, api, verb, {[Lua Table]})"); lua_error(luaState); return 1; @@ -508,12 +510,9 @@ static int LuaAfbServiceSync(lua_State* luaState) { // get source/api/verb+query const char *api = lua_tostring(luaState, LUA_FIRST_ARG + 1); const char *verb = lua_tostring(luaState, LUA_FIRST_ARG + 2); - json_object *queryJ = NULL; - if (lua_istable(luaState, LUA_FIRST_ARG + 3)) { - queryJ = LuaTableToJson(source, luaState, LUA_FIRST_ARG + 3); - } else { - queryJ = json_object_new_string(lua_tostring(luaState, LUA_FIRST_ARG + 3)); - } + + json_object *queryJ = LuaPopOneArg(source, luaState, LUA_FIRST_ARG + 3); + if (queryJ == JSON_ERROR) return 1; int iserror = AFB_ServiceSync(source->api, api, verb, queryJ, &responseJ); -- cgit 1.2.3-korg