work in progress
[src/app-framework-binder.git] / plugins / session / token-api.c
index 585c343..feb269d 100644 (file)
@@ -16,6 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <stdio.h>
 
 #include "local-def.h"
 
@@ -31,7 +32,7 @@ STATIC json_object* clientContextCreate (AFB_request *request) {
     json_object *jresp;
 
     // add an application specific client context to session
-    request->client->ctx = malloc (sizeof (MyClientApplicationHandle));
+    request->context = malloc (sizeof (MyClientApplicationHandle));
     
     // Send response to UI
     jresp = json_object_new_object();               
@@ -66,27 +67,38 @@ STATIC json_object* clientContextCheck (AFB_request *request) {
 STATIC json_object* clientContextReset (AFB_request *request) {
     json_object *jresp;
    
+    /* after this call token will be reset
+     *  - 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, "uuid", json_object_new_string (request->client->uuid));              
+    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); 
 }
+// Close and Free context
+STATIC json_object* clientGetPing (AFB_request *request) {
+    static int count=0;
+    json_object *jresp;
 
-// In this case or handle is quite basic
-typedef struct {
-   int fd; 
-} appPostCtx;
+    jresp = json_object_new_object();
+    json_object_object_add(jresp, "count", json_object_new_int (count ++));
+    
+    return (jresp); 
+}
 
 
 // This function is call when Client Session Context is removed
 // Note: when freeCtxCB==NULL standard free/malloc is called
-STATIC void clientContextFree(AFB_clientCtx *client) {
-    fprintf (stderr,"Plugin[%s] Closing Session uuid=[%s]\n", client->plugin->prefix, client->uuid);
-    free (client->ctx);
+STATIC void clientContextFree(void *context) {
+    fprintf (stderr,"Plugin[token] Closing Session\n");
+    free (context);
 }
 
 STATIC  AFB_restapi pluginApis[]= {
-  {"ping"    , AFB_SESSION_NONE  , (AFB_apiCB)getPingTest         ,"Ping Rest Test Service"},
+  {"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"},
@@ -100,7 +112,6 @@ PUBLIC AFB_plugin *pluginRegister () {
     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);