00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef GWENNET_HTTP_H
00014 #define GWENNET_HTTP_H
00015
00016 #include <gwenhywfar/gwenhywfarapi.h>
00017 #include <gwenhywfar/netconnection.h>
00018 #include <gwenhywfar/bufferedio.h>
00019 #include <gwenhywfar/httpcookie.h>
00020
00021 #ifdef __cplusplus
00022 extern "C" {
00023 #endif
00024
00025
00030 #define GWEN_NETCONN_MODE_WAITBEFOREREAD 0x00000001
00031 #define GWEN_NETCONN_MODE_WAITBEFOREBODYREAD 0x00000002
00032 #define GWEN_NETCONN_MODE_RAW 0x00000004
00033
00051 #define GWEN_NETCONN_MODE_IPC 0x00000004
00052
00053 #define GWEN_NETCONN_MODE_DEFAULT (\
00054 0 \
00055 )
00056
00063
00065 #define GWEN_NETCONNHTTP_STATE_STARTEDREAD 0x0001
00066
00067 #define GWEN_NETCONNHTTP_STATE_STARTEDBODYREAD 0x0002
00068
00073 #define GWEN_NETCONNHTTP_STATE_WAITINGFORREAD 0x0004
00074
00079 #define GWEN_NETCONNHTTP_STATE_WAITINGFORBODYREAD 0x0008
00080
00086 typedef enum {
00088 GWEN_NetConnHttp_WriteBodyModeStart=0,
00090 GWEN_NetConnHttp_WriteBodyModeWrite,
00092 GWEN_NetConnHttp_WriteBodyModeStop,
00094 GWEN_NetConnHttp_WriteBodyModeAbort
00095 } GWEN_NETCONNHTTP_WRITEBODY_MODE;
00096
00097
00098 typedef enum {
00100 GWEN_NetConnHttp_CheckCookieResult_Accept=0,
00102 GWEN_NetConnHttp_CheckCookieResult_Secure,
00104 GWEN_NetConnHttp_CheckCookieResult_Reject,
00106 GWEN_NetConnHttp_CheckCookieResult_Abort
00107 } GWEN_NETCONNHTTP_CHECK_COOKIE_RESULT;
00108
00109
00110 typedef enum {
00111 GWEN_NetConnHttp_AuthType_Basic=0,
00112 GWEN_NetConnHttp_AuthType_Digest
00113 } GWEN_NETCONNHTTP_AUTH_TYPE;
00114
00115
00116 typedef GWEN_NETCONNHTTP_CHECK_COOKIE_RESULT
00117 (*GWEN_NETCONNHTTP_CHECK_COOKIE_FN)(GWEN_NETCONNECTION *conn,
00118 GWEN_HTTP_COOKIE *cookie);
00119
00120
00121
00122 GWENHYWFAR_API
00123 GWEN_NETCONNECTION *GWEN_NetConnectionHTTP_new(GWEN_NETTRANSPORT *tr,
00124 int take,
00125 GWEN_TYPE_UINT32 libId,
00126 int pmajor,
00127 int pminor);
00128
00154 typedef int (*GWEN_NETCONNHTTP_WRITEBODY_FN)(GWEN_NETCONNECTION *conn,
00155 const char *buffer,
00156 GWEN_TYPE_UINT32 *bsize,
00157 GWEN_NETCONNHTTP_WRITEBODY_MODE m);
00164 GWENHYWFAR_API
00165 void GWEN_NetConnectionHTTP_StartBodyRead(GWEN_NETCONNECTION *conn);
00166
00172 GWENHYWFAR_API
00173 void GWEN_NetConnectionHTTP_StartRead(GWEN_NETCONNECTION *conn);
00174
00185 GWENHYWFAR_API
00186 GWEN_NETMSG *GWEN_NetConnectionHTTP_GetCurrentInMsg(GWEN_NETCONNECTION *conn);
00194 GWENHYWFAR_API
00195 GWEN_TYPE_UINT32 GWEN_NetConnectionHTTP_GetMode(GWEN_NETCONNECTION *conn);
00196 GWENHYWFAR_API
00197 void GWEN_NetConnectionHTTP_SetMode(GWEN_NETCONNECTION *conn,
00198 GWEN_TYPE_UINT32 m);
00199 GWENHYWFAR_API
00200 void GWEN_NetConnectionHTTP_AddMode(GWEN_NETCONNECTION *conn,
00201 GWEN_TYPE_UINT32 m);
00202 GWENHYWFAR_API
00203 void GWEN_NetConnectionHTTP_SubMode(GWEN_NETCONNECTION *conn,
00204 GWEN_TYPE_UINT32 m);
00205
00206 const char*
00207 GWEN_NetConnectionHTTP_GetDefaultURL(const GWEN_NETCONNECTION *conn);
00208 void GWEN_NetConnectionHTTP_SetDefaultURL(GWEN_NETCONNECTION *conn,
00209 const char *s);
00210
00215 GWENHYWFAR_API
00216 GWEN_TYPE_UINT32 GWEN_NetConnectionHTTP_GetState(GWEN_NETCONNECTION *conn);
00217
00218 GWENHYWFAR_API
00219 GWEN_DB_NODE*
00220 GWEN_NetConnectionHTTP_GetHeaders(const GWEN_NETCONNECTION *conn);
00221
00225 GWENHYWFAR_API
00226 void GWEN_NetConnectionHTTP_SetHeaders(GWEN_NETCONNECTION *conn,
00227 GWEN_DB_NODE *dbHeader);
00228
00229 GWENHYWFAR_API
00230 const char *
00231 GWEN_NetConnectionHTTP_GetLastResultMsg(const GWEN_NETCONNECTION *conn);
00232 GWENHYWFAR_API
00233 int GWEN_NetConnectionHTTP_GetLastResultCode(const GWEN_NETCONNECTION *conn);
00234
00235
00251 const char *
00252 GWEN_NetConnectionHTTP_GetVirtualServer(const GWEN_NETCONNECTION *conn);
00253 void GWEN_NetConnectionHTTP_SetVirtualServer(GWEN_NETCONNECTION *conn,
00254 const char *s);
00255 int GWEN_NetConnectionHTTP_GetVirtualPort(const GWEN_NETCONNECTION *conn);
00256 void GWEN_NetConnectionHTTP_SetVirtualPort(GWEN_NETCONNECTION *conn, int port);
00257
00258 GWEN_DB_NODE*
00259 GWEN_NetConnectionHTTP_GetHeaders(const GWEN_NETCONNECTION *conn);
00260
00264 void GWEN_NetConnectionHTTP_SetHeaders(GWEN_NETCONNECTION *conn,
00265 GWEN_DB_NODE *db);
00266
00267 GWEN_HTTP_COOKIE_LIST*
00268 GWEN_NetConnectionHTTP_GetCookies(const GWEN_NETCONNECTION *conn);
00269
00273 void GWEN_NetConnectionHTTP_SetCookies(GWEN_NETCONNECTION *conn,
00274 GWEN_HTTP_COOKIE_LIST *cookies);
00275
00276 int GWEN_NetConnectionHTTP_Request(GWEN_NETCONNECTION *conn,
00277 const char *command,
00278 const char *arg,
00279 const char *body,
00280 unsigned int size,
00281 GWEN_DB_NODE *dbResultHeader,
00282 GWEN_BUFFER *bufResult);
00283
00345 GWENHYWFAR_API
00346 int GWEN_NetConnectionHTTP_AddRequest(GWEN_NETCONNECTION *conn,
00347 GWEN_DB_NODE *dbRequest,
00348 GWEN_BUFFER *body,
00349 GWEN_BUFFEREDIO *bio);
00350
00351
00352 GWENHYWFAR_API
00353 int GWEN_NetConnectionHTTP_AddResponse(GWEN_NETCONNECTION *conn,
00354 GWEN_DB_NODE *dbResponse,
00355 GWEN_BUFFER *body,
00356 GWEN_BUFFEREDIO *bio);
00357
00365 GWENHYWFAR_API
00366 void GWEN_NetConnectionHTTP_Escape(const char *src, GWEN_BUFFER *buf);
00367
00368 GWENHYWFAR_API
00369 int GWEN_NetConnectionHTTP_Unescape(const char *src, GWEN_BUFFER *buf);
00373 #ifdef __cplusplus
00374 }
00375 #endif
00376
00377
00378 #endif
00379
00380
00381
00382
00383