From 70558f02b1c030c4290a0146313e3052fc0ea715 Mon Sep 17 00:00:00 2001 From: José Bollo Date: Fri, 1 Apr 2016 18:01:26 +0200 Subject: work in progress (tbf) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1c4b48bc56a17b7351b57c3d4da53bd89465fff4 Signed-off-by: José Bollo --- plugins/session/token-api.c | 64 +++++++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 29 deletions(-) (limited to 'plugins/session/token-api.c') diff --git a/plugins/session/token-api.c b/plugins/session/token-api.c index feb269dd..65c18d26 100644 --- a/plugins/session/token-api.c +++ b/plugins/session/token-api.c @@ -16,9 +16,12 @@ * along with this program. If not, see . */ +#define _GNU_SOURCE #include +#include -#include "local-def.h" +#include "afb-plugin.h" +#include "afb-req-itf.h" // Dummy sample of Client Application Context typedef struct { @@ -28,43 +31,44 @@ typedef struct { // Request Creation of new context if it does not exist -STATIC json_object* clientContextCreate (AFB_request *request) { +static void clientContextCreate (struct afb_req request) +{ json_object *jresp; // add an application specific client context to session - request->context = malloc (sizeof (MyClientApplicationHandle)); + *request.context = malloc (sizeof (MyClientApplicationHandle)); // Send response to UI jresp = json_object_new_object(); json_object_object_add(jresp, "token", json_object_new_string ("A New Token and Session Context Was Created")); - return (jresp); + afb_req_success(request, jresp, NULL); } // Before entering here token will be check and renew -STATIC json_object* clientContextRefresh (AFB_request *request) { +static void clientContextRefresh (struct afb_req request) { json_object *jresp; jresp = json_object_new_object(); json_object_object_add(jresp, "token", json_object_new_string ("Token was refreshed")); - return (jresp); + afb_req_success(request, jresp, NULL); } // Session token will we verified before entering here -STATIC json_object* clientContextCheck (AFB_request *request) { +static void clientContextCheck (struct afb_req request) { json_object *jresp = json_object_new_object(); json_object_object_add(jresp, "isvalid", json_object_new_boolean (TRUE)); - return (jresp); + afb_req_success(request, jresp, NULL); } // Close and Free context -STATIC json_object* clientContextReset (AFB_request *request) { +static void clientContextReset (struct afb_req request) { json_object *jresp; /* after this call token will be reset @@ -75,44 +79,46 @@ STATIC json_object* clientContextReset (AFB_request *request) { jresp = json_object_new_object(); json_object_object_add(jresp, "info", json_object_new_string ("Token and all resources are released")); - // WARNING: if you free context resource manually here do not forget to set request->context=NULL; - return (jresp); + // WARNING: if you free context resource manually here do not forget to set *request.context=NULL; + afb_req_success(request, jresp, NULL); } // Close and Free context -STATIC json_object* clientGetPing (AFB_request *request) { +static void clientGetPing (struct afb_req request) { static int count=0; json_object *jresp; jresp = json_object_new_object(); json_object_object_add(jresp, "count", json_object_new_int (count ++)); - return (jresp); + afb_req_success(request, jresp, NULL); } // This function is call when Client Session Context is removed // Note: when freeCtxCB==NULL standard free/malloc is called -STATIC void clientContextFree(void *context) { +static void clientContextFree(void *context) { fprintf (stderr,"Plugin[token] Closing Session\n"); free (context); } -STATIC AFB_restapi pluginApis[]= { - {"ping" , AFB_SESSION_NONE , (AFB_apiCB)clientGetPing ,"Ping Rest Test Service"}, - {"create" , AFB_SESSION_CREATE, (AFB_apiCB)clientContextCreate ,"Request Client Context Creation"}, - {"refresh" , AFB_SESSION_RENEW , (AFB_apiCB)clientContextRefresh,"Refresh Client Context Token"}, - {"check" , AFB_SESSION_CHECK , (AFB_apiCB)clientContextCheck ,"Check Client Context Token"}, - {"reset" , AFB_SESSION_CLOSE , (AFB_apiCB)clientContextReset ,"Close Client Context and Free resources"}, +static const struct AFB_restapi pluginApis[]= { + {"ping" , AFB_SESSION_NONE , clientGetPing ,"Ping Rest Test Service"}, + {"create" , AFB_SESSION_CREATE, clientContextCreate ,"Request Client Context Creation"}, + {"refresh" , AFB_SESSION_RENEW , clientContextRefresh,"Refresh Client Context Token"}, + {"check" , AFB_SESSION_CHECK , clientContextCheck ,"Check Client Context Token"}, + {"reset" , AFB_SESSION_CLOSE , clientContextReset ,"Close Client Context and Free resources"}, {NULL} }; -PUBLIC AFB_plugin *pluginRegister () { - AFB_plugin *plugin = malloc (sizeof (AFB_plugin)); - plugin->type = AFB_PLUGIN_JSON; - plugin->info = "Application Framework Binder Service"; - plugin->prefix= "token"; // url base - plugin->apis = pluginApis; - plugin->freeCtxCB= (void*) clientContextFree; - - return (plugin); +static const struct AFB_plugin plugin_desc = { + .type = AFB_PLUGIN_JSON, + .info = "Application Framework Binder Service", + .prefix = "token", + .apis = pluginApis, + .freeCtxCB = clientContextFree }; + +const struct AFB_plugin *pluginRegister () +{ + return &plugin_desc; +} -- cgit 1.2.3-korg