From b8d4c81cc8175ce49c77d41e572a9f1a2e367cdc Mon Sep 17 00:00:00 2001 From: José Bollo Date: Sat, 2 Apr 2016 15:08:02 +0200 Subject: refactoring in progress (tbf) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I090ff42572a56c1d3ed3dbeccddf195d3bc09aa3 Signed-off-by: José Bollo --- include/afb-plugin.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 include/afb-plugin.h (limited to 'include/afb-plugin.h') diff --git a/include/afb-plugin.h b/include/afb-plugin.h new file mode 100644 index 00000000..8ca72704 --- /dev/null +++ b/include/afb-plugin.h @@ -0,0 +1,65 @@ +/* + * Copyright 2016 IoT.bzh + * Author: José Bollo + * + * 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. + */ + +struct afb_req; + +/* Plugin Type */ +enum AFB_pluginE +{ + AFB_PLUGIN_JSON = 123456789, +/* AFB_PLUGIN_JSCRIPT = 987654321, */ + AFB_PLUGIN_RAW = 987123546 +}; + +/* Enum for Session/Token/Authentication middleware */ +enum AFB_sessionE +{ + AFB_SESSION_NONE, + AFB_SESSION_CREATE, + AFB_SESSION_CLOSE, + AFB_SESSION_RENEW, + AFB_SESSION_CHECK +}; + +/* API definition */ +struct AFB_restapi +{ + const char *name; + enum AFB_sessionE session; + void (*callback)(struct afb_req req); + const char *info; +}; + +/* Plugin definition */ +struct AFB_plugin +{ + enum AFB_pluginE type; + const char *info; + const char *prefix; + const struct AFB_restapi *apis; + void (*freeCtxCB)(void*); // callback to free application context [null for standard free] +}; + +typedef enum AFB_pluginE AFB_pluginE; +typedef enum AFB_sessionE AFB_sessionE; +typedef void (*AFB_apiCB)(struct afb_req); +typedef void (*AFB_freeCtxCB)(void*); +typedef struct AFB_restapi AFB_restapi; +typedef struct AFB_plugin AFB_plugin; + +extern const struct AFB_plugin *pluginRegister (); + -- cgit 1.2.3-korg