X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fapp-framework-binder.git;a=blobdiff_plain;f=bindings%2Fsamples%2FAuthLogin.c;h=9570bc5d9e6da149c78c758711f00697c83eefad;hp=efecf240ebab5a4a601b87f2aac352c98ac23ec6;hb=65353dce81a629e042800bb7b86fcd869a76727e;hpb=7059e59cddc1c81321639875636e88895bc14309 diff --git a/bindings/samples/AuthLogin.c b/bindings/samples/AuthLogin.c index efecf240..9570bc5d 100644 --- a/bindings/samples/AuthLogin.c +++ b/bindings/samples/AuthLogin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015, 2016 "IoT.bzh" + * Copyright (C) 2015-2020 "IoT.bzh" * Author "Fulup Ar Foll" * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,11 +19,12 @@ #include #include -#include +#define AFB_BINDING_VERSION 3 +#include // Dummy sample of Client Application Context typedef struct { - int something; + int something; void *whateveryouwant; } MyClientApplicationHandle; @@ -36,7 +37,7 @@ static void clientContextFree(void *context) { } // Request Creation of new context if it does not exist -static void clientContextConnect (struct afb_req request) +static void clientContextConnect (afb_req_t request) { json_object *jresp; @@ -45,85 +46,78 @@ static void clientContextConnect (struct afb_req request) // do something intelligent to check if we should or not update level of assurance from 0(anonymous) to 1(logged) afb_req_session_set_LOA(request, 1); - + // Send response to UI - jresp = json_object_new_object(); + jresp = json_object_new_object(); json_object_object_add(jresp, "token", json_object_new_string ("A New Token and Session Context Was Created")); afb_req_success(request, jresp, NULL); - + } // Before entering here token will be check and renew -static void clientContextRefresh (struct afb_req request) { +static void clientContextRefresh (afb_req_t request) { json_object *jresp; - + jresp = json_object_new_object(); - json_object_object_add(jresp, "token", json_object_new_string ("Token was refreshed")); - + json_object_object_add(jresp, "token", json_object_new_string ("Token was refreshed")); + afb_req_success(request, jresp, NULL); } // Session token will we verified before entering here -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)); - +static void clientContextCheck (afb_req_t request) { + + json_object *jresp = json_object_new_object(); + json_object_object_add(jresp, "isvalid", json_object_new_boolean (1)); + afb_req_success(request, jresp, NULL); } // Close and Free context -static void clientContextLogout (struct afb_req request) { +static void clientContextLogout (afb_req_t request) { json_object *jresp; - + /* after this call token will be reset - * - no further access to API will be possible + * - no further access to API will be possible * - every context from any used plugin will be freed */ - + 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; + + // WARNING: if you free context resource manually here do not forget to set *request.context=NULL; afb_req_success(request, jresp, NULL); - + afb_req_session_set_LOA(request, 0); } // Close and Free context -static void clientGetPing (struct afb_req request) { +static void clientGetPing (afb_req_t request) { static int count=0; json_object *jresp; jresp = json_object_new_object(); json_object_object_add(jresp, "count", json_object_new_int (count ++)); - + afb_req_success(request, jresp, NULL); } -static const struct AFB_verb_desc_v1 verbs[]= { - {"ping" , AFB_SESSION_NONE , clientGetPing ,"Ping Rest Test Service"}, - {"connect" , AFB_SESSION_LOA_EQ_0 | AFB_SESSION_RENEW, clientContextConnect,"Connect/Login Client"}, - {"refresh" , AFB_SESSION_LOA_GE_1 | AFB_SESSION_RENEW, clientContextRefresh,"Refresh Client Authentication Token"}, - {"check" , AFB_SESSION_LOA_GE_1 , clientContextCheck ,"Check Client Authentication Token"}, - {"logout" , AFB_SESSION_LOA_GE_1 | AFB_SESSION_CLOSE, clientContextLogout ,"Logout Client and Free resources"}, - {NULL} +static const struct afb_verb_v3 verbs[]= { + {.verb="ping" , .session=AFB_SESSION_NONE , .callback=clientGetPing ,.info="Ping Rest Test Service"}, + {.verb="connect" , .session=AFB_SESSION_LOA_0 | AFB_SESSION_RENEW, .callback=clientContextConnect,.info="Connect/Login Client"}, + {.verb="refresh" , .session=AFB_SESSION_LOA_1 | AFB_SESSION_RENEW, .callback=clientContextRefresh,.info="Refresh Client Authentication Token"}, + {.verb="check" , .session=AFB_SESSION_LOA_1 , .callback=clientContextCheck ,.info="Check Client Authentication Token"}, + {.verb="logout" , .session=AFB_SESSION_LOA_1 | AFB_SESSION_CLOSE, .callback=clientContextLogout ,.info="Logout Client and Free resources"}, + {0, 0, 0, 0, 0, 0, 0} }; -static const struct AFB_plugin plugin_desc = { - .type = AFB_PLUGIN_VERSION_1, - .v1 = { - .info = "Application Framework Binder Authentication sample", - .prefix = "auth", - .verbs = verbs - } -}; - -const struct AFB_plugin *pluginAfbV1Register (const struct AFB_interface *itf) +const struct afb_binding_v3 afbBindingV3 = { - return &plugin_desc; -} + .api = "auth", /* the API name (or binding name or prefix) */ + .info = "Application Framework Binder Authentication sample", /* short description of of the binding */ + .verbs = verbs /* the array describing the verbs of the API */ +};