00001 #ifndef __HTTP_REQUEST_H__ 00002 #define __HTTP_REQUEST_H__ 00003 00004 #define HTTP_REQ_OPTIONS 0 00005 #define HTTP_REQ_GET 1 00006 #define HTTP_REQ_HEAD 2 00007 #define HTTP_REQ_POST 3 00008 #define HTTP_REQ_PUT 4 00009 #define HTTP_REQ_DELETE 5 00010 #define HTTP_REQ_TRACE 6 00011 #define HTTP_REQ_CONNECT 7 00012 00013 extern char httpRequest[8][8]; 00014 00015 00016 typedef struct { 00017 char * method; 00018 char * requestUri; 00019 char * httpVersion; 00020 } tRequestLine; 00021 00022 typedef struct { 00023 char * key; 00024 char * value; 00025 } tHttpHeaderLine; 00026 00027 typedef struct { 00028 tRequestLine req; 00029 tHttpHeaderLine * headers; 00030 unsigned int headersCount; 00031 00032 unsigned char bodyLength; 00033 } tHttpHeader; 00034 00035 typedef struct { 00036 tHttpHeader header; 00037 unsigned int length; 00038 char * body; 00039 } tHttpRequest; 00040 00041 00042 int getHttpRequest(char **, unsigned int *, tHttpRequest *); 00043 void freeHttpRequest(tHttpRequest *); 00044 void freeHttpHeader(tHttpHeader *); 00045 unsigned char httpHeaderIsStarted(tHttpHeader *); 00046 int httpHeaderIsComplete(tHttpHeader *); 00047 int httpHeaderGet(char **, unsigned int *, tHttpHeader *); 00048 void httpHeaderParseRequestLine(tHttpHeader *, const char *, unsigned int); 00049 00050 #endif // __HTTP_REQUEST_H__
1.5.8