diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/fapis.c | 57 | ||||
-rw-r--r-- | src/fapis.h | 23 | ||||
-rw-r--r-- | src/test-binding.c | 3 |
4 files changed, 83 insertions, 2 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 59ff6db..170844d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -21,7 +21,7 @@ PROJECT_TARGET_ADD(test-binding) # Define project Targets - ADD_LIBRARY(${TARGET_NAME} MODULE test-binding.c) + ADD_LIBRARY(${TARGET_NAME} MODULE ${TARGET_NAME}.c fapis.c) SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "" diff --git a/src/fapis.c b/src/fapis.c new file mode 100644 index 0000000..a736fd6 --- /dev/null +++ b/src/fapis.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2016 "IoT.bzh" + * + * Author Romain Forlot <romain@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <fapis.h> + +static int LoadOneFapi(void *data, AFB_ApiT apiHandle) +{ + CtlActionT *actions = NULL; + json_object* verbsJ = (json_object*) data; + + actions = ActionConfig(apiHandle, verbsJ, 1); + + return 0; +} + +static void OneFapiConfig(void *data, json_object *fapiJ) { + const char *uid = NULL, *info = NULL, *spath = NULL; + json_object *verbsJ = NULL, *filesJ = NULL, *luaJ = NULL; + + AFB_ApiT apiHandle = (AFB_ApiT)data; + + if(wrap_json_unpack(fapiJ, "{ss,s?s,s?s,so,s?o,so !}", + "uid", &uid, + "info", &info, + "spath", &spath, + "libs", &filesJ, + "lua", &luaJ, + "verbs", &verbsJ)) { + AFB_ApiError(apiHandle, "Wrong fapis specification, missing uid|[info]|[spath]|libs|[lua]|verbs"); + return; + } + + if (afb_dynapi_new_api(apiHandle, uid, info, 1, LoadOneFapi, )) { + AFB_ApiError(apiHandle, "Error creating new api: %s", uid); + return; + } +} + +int FapisConfig(AFB_ApiT apiHandle, CtlSectionT *section, json_object *fapisJ) { + if(! PluginConfig(apiHandle, section, fapisJ)) + wrap_json_optarray_for_all(fapisJ, OneFapiConfig, (void*)apiHandle); +} diff --git a/src/fapis.h b/src/fapis.h new file mode 100644 index 0000000..d0dd467 --- /dev/null +++ b/src/fapis.h @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2016 "IoT.bzh" + * + * Author Romain Forlot <romain@iot.bzh> + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <ctl-config.h> +#include <wrap-json.h> +#include <filescan-utils.h> + +int FapisConfig(AFB_ApiT apiHandle, CtlSectionT *section, json_object *fapisJ); diff --git a/src/test-binding.c b/src/test-binding.c index a1939e2..1668360 100644 --- a/src/test-binding.c +++ b/src/test-binding.c @@ -22,7 +22,7 @@ #include <time.h> #include "test-binding.h" - +#include "fapis.h" // default api to print log when apihandle not avaliable afb_dynapi *AFB_default; @@ -31,6 +31,7 @@ static CtlSectionT ctrlSections[] = { {.key = "resources", .loadCB = PluginConfig}, {.key = "onload", .loadCB = OnloadConfig}, {.key = "events", .loadCB = EventConfig}, + {.key = "fapis", .loadCB = FapisConfig}, {.key = NULL} }; |