1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*************************************************************************
*
* HTCd - Copyright (C) 1998-2006 Henrik Rydberg
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef MIMEHTTPH
#define MIMEHTTPH
#include <mime/mime.h>
#include <mt/dates.h>
// Entity Headers
const mstring allow_tag="Allow";
const mstring accept_tag="Accept";
const mstring accept_charset_tag="Accept-Charset";
const mstring accept_enc_tag="Accept-Encoding";
const mstring accept_lang_tag="Accept-Language";
const mstring accept_range_tag="Accept-Ranges";
const mstring cont_enc_tag="Content-Encoding";
const mstring cont_lang_tag="Content-Language";
const mstring cont_location_tag="Content-Location";
const mstring cont_md5_tag="Content-MD5";
const mstring cont_range_tag="Content-Range";
const mstring expires_tag="Expires";
const mstring lastmod_tag="Last-Modified";
// General headers
const mstring cache_tag="Cache-Control";
const mstring connect_tag="Connection";
const mstring date_tag="Date";
const mstring pragma_tag="Pragma";
const mstring trailer_tag="Trailer";
const mstring trans_enc_tag="Transfer-Encoding";
const mstring upgrade_tag="Upgrade";
const mstring via_tag="Via";
const mstring warning_tag="Warning";
// Request headers
const mstring auth_tag="Authorization";
const mstring expect_tag="Expect";
const mstring host_tag="Host";
const mstring if_match_tag="If-Match";
const mstring if_mod_tag="If-Modified-Since";
const mstring if_none_tag="If-None-Match";
const mstring if_range_tag="If-Range";
const mstring if_unmod_tag="If-Unmodified-Since";
const mstring max_forwards_tag="Max-Forwards";
const mstring proxy_tag="Proxy-Authorization";
const mstring range_tag="Range";
const mstring referer_tag="Referer";
const mstring te_tag="TE";
const mstring user_agent_tag="User-Agent";
const mstring cookie_tag="Cookie";
// Response headers
const mstring age_tag="Age";
const mstring etag_tag="ETag";
const mstring location_tag="Location";
const mstring proxy_authent_tag="Proxy-Authenticate";
const mstring retry_tag="Retry-After";
const mstring server_tag="Server";
const mstring vary_tag="Vary";
const mstring authent_tag="WWW-Authenticate";
const mstring set_cookie_tag="Set-Cookie";
class HTTP : public Mime {
public:
HTTP();
HTTP(const sref& msg) { Init(msg); }
mstring cache,connect,date,pragma;
mstring trailer,trans_enc,upgrade,via,warning;
mstring allow,cont_enc,cont_lang,cont_location;
mstring cont_md5,cont_range,expires,lastmod;
mstring accept,accept_charset,accept_enc,accept_lang,accept_range;
time_t idate;
void putHead(mstream& out) const;
protected:
int Special(sref line);
int Handle(const sref& name,
const sref& rawval,
const sref& val,
const rrpile& opts);
};
#endif
|