X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=plugins%2Fsession%2Ftoken-api.c;h=91f9cd8f5ceb82ff7f5ca4d84f6dcf937d5381a5;hb=469e619ac45402471ea7d8c792ffc06e79346ef2;hp=feb269dd5a3de1e06b764f216fd0cbfab0db2b50;hpb=bbe18a624f4961165cf52d7f4c25de6f3a7ec012;p=src%2Fapp-framework-binder.git diff --git a/plugins/session/token-api.c b/plugins/session/token-api.c index feb269dd..91f9cd8f 100644 --- a/plugins/session/token-api.c +++ b/plugins/session/token-api.c @@ -2,23 +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 { @@ -28,43 +29,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 +77,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 (const struct AFB_interface *itf) +{ + return &plugin_desc; +}