Update copyright dates
[src/app-framework-binder.git] / bindings / samples / AuthLogin.c
index efecf24..9570bc5 100644 (file)
@@ -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");
 #include <stdio.h>
 #include <json-c/json.h>
 
-#include <afb/afb-plugin.h>
+#define AFB_BINDING_VERSION 3
+#include <afb/afb-binding.h>
 
 // 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 */
+};