:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / apps / utils / net / roshttpd / include / http.h
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS HTTP Daemon
4  * FILE:        include/http.h
5  */
6 #ifndef __HTTP_H
7 #define __HTTP_H
8
9 #include <windows.h>
10
11 // Generel HTTP related constants
12 #define NUMMETHODS 7
13 #define NUMGENERELS 7
14 #define NUMREQUESTS 17
15 #define NUMENTITIES 12
16
17 // HTTP method constants
18 #define hmOPTIONS       0
19 #define hmGET           1
20 #define hmHEAD          2
21 #define hmPOST          3
22 #define hmPUT           4
23 #define hmDELETE        5
24 #define hmTRACE         6
25
26 class CHttpParser {
27 public:
28     CHAR sBuffer[2048];
29     UINT nHead;
30     UINT nTail;
31     CHAR sUri[255];
32     CHAR sVersion[15];
33     CHAR sHeader[63];
34     CHAR sMethod[63];
35     UINT nMethodNo;
36     BOOL bUnknownMethod;
37     BOOL bBadRequest;
38     CHttpParser();
39     ~CHttpParser();
40     BOOL Complete();
41     BOOL Parse();
42 private:
43     BOOL ReadChar(LPSTR lpsStr);
44     BOOL PeekChar(LPSTR lpsStr);
45     BOOL ReadString(LPSTR lpsStr, UINT nLength);
46     BOOL ReadSpecial(LPSTR lpStr, UINT nLength);
47     VOID Skip(CHAR sStr);
48     BOOL Expect(CHAR sStr);
49     BOOL ExpectCRLF();
50     BOOL RequestLine();
51     BOOL GenerelHeader();
52     BOOL RequestHeader();
53     BOOL EntityHeader();
54     BOOL MessageBody();
55 };
56
57 #endif /* __HTTP_H */