]>
Commit | Line | Data |
---|---|---|
450e0c10 | 1 | /* |
450e0c10 | 2 | * |
3 | * SQUID Web Proxy Cache http://www.squid-cache.org/ | |
4 | * ---------------------------------------------------------- | |
5 | * | |
6 | * Squid is the result of efforts by numerous individuals from | |
7 | * the Internet community; see the CONTRIBUTORS file for full | |
8 | * details. Many organizations have provided support for Squid's | |
9 | * development; see the SPONSORS file for full details. Squid is | |
10 | * Copyrighted (C) 2001 by the Regents of the University of | |
11 | * California; see the COPYRIGHT file for full details. Squid | |
12 | * incorporates software developed and/or copyrighted by other | |
13 | * sources; see the CREDITS file for full details. | |
14 | * | |
15 | * This program is free software; you can redistribute it and/or modify | |
16 | * it under the terms of the GNU General Public License as published by | |
17 | * the Free Software Foundation; either version 2 of the License, or | |
18 | * (at your option) any later version. | |
26ac0430 | 19 | * |
450e0c10 | 20 | * This program is distributed in the hope that it will be useful, |
21 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 | * GNU General Public License for more details. | |
26ac0430 | 24 | * |
450e0c10 | 25 | * You should have received a copy of the GNU General Public License |
26 | * along with this program; if not, write to the Free Software | |
27 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. | |
28 | * | |
29 | * Copyright (c) 2003, Robert Collins <robertc@squid-cache.org> | |
30 | */ | |
450e0c10 | 31 | #ifndef SQUID_HTTPSTATUSLINE_H |
32 | #define SQUID_HTTPSTATUSLINE_H | |
33 | ||
526ed14e | 34 | #include "http/ProtocolVersion.h" |
955394ce | 35 | #include "http/StatusCode.h" |
e77d7ef0 | 36 | #include "SquidString.h" |
450e0c10 | 37 | |
955394ce AJ |
38 | class Packer; |
39 | class String; | |
40 | ||
e77d7ef0 AJ |
41 | /** |
42 | * Holds the values parsed from an HTTP reply status line. | |
43 | * | |
44 | * For example: HTTP/1.1 200 Okay | |
45 | */ | |
450e0c10 | 46 | class HttpStatusLine |
47 | { | |
450e0c10 | 48 | public: |
49 | /* public, read only */ | |
e77d7ef0 AJ |
50 | |
51 | /** | |
52 | * By rights protocol name should be a constant "HTTP", with no need for this field to exist. | |
0c3d3f65 AJ |
53 | * However there are protocols which violate HTTP by sending their own custom formats |
54 | * back with other protocol names (ICY streaming format being the current major problem). | |
e77d7ef0 | 55 | */ |
0c3d3f65 | 56 | AnyP::ProtocolType protocol; |
e77d7ef0 | 57 | |
526ed14e | 58 | Http::ProtocolVersion version; ///< breakdown of protocol version labels: 0.9 1.0 1.1 |
955394ce | 59 | Http::StatusCode status; ///< status code. ie 200 404 |
e77d7ef0 | 60 | const char *reason; ///< points to a _constant_ string (default or supplied), never free()d */ |
450e0c10 | 61 | }; |
62 | ||
63 | /* init/clean */ | |
d9c252f2 FC |
64 | void httpStatusLineInit(HttpStatusLine * sline); |
65 | void httpStatusLineClean(HttpStatusLine * sline); | |
450e0c10 | 66 | /* set/get values */ |
526ed14e | 67 | void httpStatusLineSet(HttpStatusLine * sline, Http::ProtocolVersion version, |
955394ce | 68 | Http::StatusCode status, const char *reason); |
d9c252f2 | 69 | const char *httpStatusLineReason(const HttpStatusLine * sline); |
450e0c10 | 70 | /* parse/pack */ |
71 | /* parse a 0-terminating buffer and fill internal structires; returns true on success */ | |
d9c252f2 | 72 | int httpStatusLineParse(HttpStatusLine * sline, const String &protoPrefix, |
55ca4440 | 73 | const char *start, const char *end); |
450e0c10 | 74 | /* pack fields using Packer */ |
d9c252f2 | 75 | void httpStatusLinePackInto(const HttpStatusLine * sline, Packer * p); |
450e0c10 | 76 | |
955394ce | 77 | const char *httpStatusString(Http::StatusCode status); |
582c2af2 | 78 | |
450e0c10 | 79 | #endif /* SQUID_HTTPSTATUSLINE_H */ |