X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=plugins%2Fsession%2Ftoken-api.c;h=14deb12bb3820b159356d13e099876d1fe4bdeec;hb=1e8edd92a04281bddc86fff3db5b407943504aed;hp=7073dac0226ad309046abcd757a66a230070c528;hpb=2f5957984835ffc7d4f03bb0094a93c575e3eb17;p=src%2Fapp-framework-binder.git diff --git a/plugins/session/token-api.c b/plugins/session/token-api.c index 7073dac0..14deb12b 100644 --- a/plugins/session/token-api.c +++ b/plugins/session/token-api.c @@ -2,22 +2,24 @@ * Copyright (C) 2015 "IoT.bzh" * Author "Fulup Ar Foll" * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * 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 * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * http://www.apache.org/licenses/LICENSE-2.0 * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * 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. */ +#define _GNU_SOURCE +#include +#include -#include "local-def.h" +#include "afb-plugin.h" // Dummy sample of Client Application Context typedef struct { @@ -26,44 +28,52 @@ typedef struct { } MyClientApplicationHandle; +// This function is call when Client Session Context is removed +// Note: when freeCtxCB==NULL standard free/malloc is called +static void clientContextFree(void *context) { + fprintf (stderr,"Plugin[token] Closing Session\n"); + free (context); +} + // 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)); + afb_req_context_set(request, malloc (sizeof (MyClientApplicationHandle)), clientContextFree); // 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 @@ -74,45 +84,38 @@ 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, char* uuid) { - fprintf (stderr,"Plugin[token] Closing Session uuid=[%s]\n", uuid); - 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->handle= (void*) "What ever you want"; - 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 }; + +const struct AFB_plugin *pluginRegister (const struct AFB_interface *itf) +{ + return &plugin_desc; +}