00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef GWEN_HTTP_SESSION_H
00014 #define GWEN_HTTP_SESSION_H
00015
00016
00017 #define GWEN_HTTP_SESSION_FLAGS_ALLOW_RECONNECT 0x00000001
00018 #define GWEN_HTTP_SESSION_FLAGS_KEEP_ALIVE 0x00000002
00019 #define GWEN_HTTP_SESSION_FLAGS_ALLOW_REDIRECT 0x00000004
00020 #define GWEN_HTTP_SESSION_FLAGS_USE_HTTPS 0x00000008
00021 #define GWEN_HTTP_SESSION_FLAGS_CLEAR_COOKIES_RECON 0x00000010
00022 #define GWEN_HTTP_SESSION_FLAGS_CLEAR_COOKIES_REDIR 0x00000020
00023
00024
00025 #include <gwenhywfar/httpcookie.h>
00026 #include <gwenhywfar/misc.h>
00027 #include <gwenhywfar/inherit.h>
00028 #include <gwenhywfar/netconnectionhttp.h>
00029 #include <gwenhywfar/httpurl.h>
00030
00031
00032 typedef struct GWEN_HTTP_SESSION GWEN_HTTP_SESSION;
00033
00034 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_HTTP_SESSION, GWENHYWFAR_API)
00035 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_HTTP_SESSION, GWEN_HttpSession,
00036 GWENHYWFAR_API)
00037
00038
00039 typedef int (*GWEN_HTTPSESSION_ASKFOLLOW_FN)(GWEN_HTTP_SESSION *sess,
00040 const char *oldLocation,
00041 const char *newLocation);
00042
00043 typedef int (*GWEN_HTTPSESSION_GETAUTH_FN)(GWEN_HTTP_SESSION *sess,
00044 const GWEN_HTTP_URL *url,
00045 const char *authScheme,
00046 const char *realm,
00047 char *buffer,
00048 unsigned int size,
00049 int forceAsk);
00050
00051
00052
00053 GWEN_HTTP_SESSION *GWEN_HttpSession_new(const char *addr,
00054 int port,
00055 GWEN_TYPE_UINT32 flags,
00056 int pmajor,
00057 int pminor);
00058
00059 void GWEN_HttpSession_free(GWEN_HTTP_SESSION *sess);
00060
00061
00062 void GWEN_HttpSession_SetAskFollowFn(GWEN_HTTP_SESSION *sess,
00063 GWEN_HTTPSESSION_ASKFOLLOW_FN fn);
00064
00065 void GWEN_HttpSession_SetGetAuthFn(GWEN_HTTP_SESSION *sess,
00066 GWEN_HTTPSESSION_GETAUTH_FN fn);
00067
00068 int GWEN_HttpSession_Request(GWEN_HTTP_SESSION *sess,
00069 const char *command,
00070 const char *arg,
00071 const char *body,
00072 unsigned int size,
00073 GWEN_DB_NODE *dbResultHeader,
00074 GWEN_BUFFER *result);
00075
00076 void GWEN_HttpSession_Close(GWEN_HTTP_SESSION *sess);
00077
00078 const char *GWEN_HttpSession_GetLastStatusMsg(const GWEN_HTTP_SESSION *sess);
00079 int GWEN_HttpSession_GetLastStatusCode(const GWEN_HTTP_SESSION *sess);
00080
00081
00082 GWEN_TYPE_UINT32 GWEN_HttpSession_GetFlags(const GWEN_HTTP_SESSION *sess);
00083 void GWEN_HttpSession_SetFlags(GWEN_HTTP_SESSION *sess,
00084 GWEN_TYPE_UINT32 flags);
00085 void GWEN_HttpSession_AddFlags(GWEN_HTTP_SESSION *sess,
00086 GWEN_TYPE_UINT32 flags);
00087 void GWEN_HttpSession_SubFlags(GWEN_HTTP_SESSION *sess,
00088 GWEN_TYPE_UINT32 flags);
00089
00090 GWEN_DB_NODE *GWEN_HttpSession_GetHeaders(const GWEN_HTTP_SESSION *sess);
00091 void GWEN_HttpSession_SetHeaders(GWEN_HTTP_SESSION *sess,
00092 GWEN_DB_NODE *db);
00093
00094 #endif
00095
00096