Integrated Post for Fileupload Test
[src/app-framework-binder.git] / include / local-def.h
index df66a09..a5d48bf 100644 (file)
@@ -59,6 +59,8 @@
 #define DEFLT_API_TIMEOUT   0      // default Plugin API Timeout [0=NoLimit for Debug Only]
 #define DEFLT_API_TIMEOUT   0      // default Plugin API Timeout
 #define DEFLT_CACHE_TIMEOUT 100000 // default Static File Chache [Client Side Cache 100000~=1day]
+#define DEFLT_AUTH_TOKEN    NULL   // expect for debug should == NULL
+#define DEFLT_HTTP_TIMEOUT  15     // Max MibMicroHttp timeout
 
 typedef int BOOL;
 #ifndef FALSE
@@ -74,8 +76,12 @@ typedef int BOOL;
 
 extern int verbose;  // this is the only global variable
 
+
+// Plugin Type
+typedef enum  {AFB_PLUGIN_JSON=123456789, AFB_PLUGIN_JSCRIPT=987654321,  AFB_PLUGIN_RAW=987123546} AFB_pluginT;
+
 // prebuild json error are constructed in config.c
-typedef enum  { AFB_FALSE, AFB_TRUE, AFB_FATAL, AFB_FAIL, AFB_WARNING, AFB_EMPTY, AFB_SUCCESS, AFB_DONE} AFB_error;
+typedef enum  { AFB_FALSE, AFB_TRUE, AFB_FATAL, AFB_FAIL, AFB_WARNING, AFB_EMPTY, AFB_SUCCESS, AFB_DONE, AFB_UNAUTH} AFB_error;
 
 extern char *ERROR_LABEL[];
 #define ERROR_LABEL_DEF {"false", "true","fatal", "fail", "warning", "empty", "success"}
@@ -85,8 +91,7 @@ extern char *ERROR_LABEL[];
 #define MAX_POST_SIZE  4096   // maximum size for POST data
 #define CTX_NBCLIENTS   10   // allow a default of 10 authenticated clients
 
-// use to check anonymous data when using dynamic loadable lib
-typedef enum  {AFB_PLUGIN=1234, AFB_REQUEST=5678} AFB_type;
+
 typedef json_object* (*AFB_apiCB)();
 
 // Error code are requested through function to manage json usage count
@@ -136,7 +141,8 @@ typedef struct {
   char *pidfile;           // where to store pid when running background
   char *sessiondir;        // where to store mixer session files
   char *configfile;        // where to store configuration on gateway exit
-  char *setuid;
+  char *setuid;            // downgrade uid to username
+  char *token;             // initial authentication token [default NULL no session]
   int  cacheTimeout;
   int  apiTimeout;
   int  cntxTimeout;        // Client Session Context timeout
@@ -164,26 +170,38 @@ typedef struct {
   AFB_privateApi *private;
 } AFB_restapi;
 
+// Plugin definition
+typedef struct {
+  AFB_pluginT type;  
+  char *info;
+  char *prefix;
+  size_t prefixlen;
+  json_object *jtype;
+  AFB_restapi *apis;
+  void *handle;
+  int  ctxCount;
+  AFB_apiCB freeCtxCB;  // callback to free application context [null for standard free]
+} AFB_plugin;
+
 
 // User Client Session Context
 typedef struct {
-  int  cid;         // index 0 if global
-  char uuid[37];    // long term authentication of remote client
-  char token[37];   // short term authentication of remote client
-  time_t timeStamp; // last time token was refresh
-  int   restfull;   // client does not use cookie
-  void *handle;     // application specific context
-  AFB_apiCB freeHandleCB;  // callback to free application handle [null for standard free]
+  int  cid;             // index 0 if global
+  char uuid[37];        // long term authentication of remote client
+  char token[37];       // short term authentication of remote client
+  time_t timeStamp;     // last time token was refresh
+  int   restfull;       // client does not use cookie
+  void *ctx;            // application specific context
+  AFB_plugin *plugin;   // provide callback and easy access to plugin
 } AFB_clientCtx;
 
-
 // MHD_lookup_connection_value(connection, MHD_GET_ARGUMENT_KIND, "value");
 typedef struct {
   const char *url;
   char *plugin;
   char *api;
-  char *post;
-  int  loa;
+  char *post; // post data in raw format
+  int  len;   // post data len
   json_object *jresp;
   AFB_clientCtx *client;      // needed because libmicrohttp cannot create an empty response
   int   restfull;             // request is resfull [uuid token provided]
@@ -194,20 +212,6 @@ typedef struct {
 } AFB_request;
 
 
-// Plugin definition
-typedef struct {
-  AFB_type type;  
-  char *info;
-  char *prefix;
-  size_t prefixlen;
-  json_object *jtype;
-  AFB_restapi *apis;
-  void *handle;
-  int  ctxCount;
-  AFB_clientCtx *ctxGlobal;
-} AFB_plugin;
-
-
 typedef struct {
   AFB_config  *config;   // pointer to current config
   // List of commands to execute