-rw-r--r-- | include/kingate/cgi_gateway.h | 117 | ||||
-rw-r--r-- | include/kingate/exception.h | 9 | ||||
-rw-r--r-- | include/kingate/util.h | 35 |
3 files changed, 149 insertions, 12 deletions
diff --git a/include/kingate/cgi_gateway.h b/include/kingate/cgi_gateway.h index f683580..a5c4056 100644 --- a/include/kingate/cgi_gateway.h +++ b/include/kingate/cgi_gateway.h | |||
@@ -4,6 +4,14 @@ | |||
4 | #include <map> | 4 | #include <map> |
5 | #include "kingate/cgi_interface.h" | 5 | #include "kingate/cgi_interface.h" |
6 | 6 | ||
7 | #ifndef __deprecated | ||
8 | #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3 | ||
9 | #define __deprecated __attribute__((deprecated)) | ||
10 | #else | ||
11 | #define __deprecated | ||
12 | #endif | ||
13 | #endif | ||
14 | |||
7 | /** | 15 | /** |
8 | * @file | 16 | * @file |
9 | * @brief the cgi_gateway -- main interface to CGI. | 17 | * @brief the cgi_gateway -- main interface to CGI. |
@@ -59,7 +67,7 @@ namespace kingate { | |||
59 | * @see exception_notfound | 67 | * @see exception_notfound |
60 | * @see cgi_interface::get_meta() | 68 | * @see cgi_interface::get_meta() |
61 | */ | 69 | */ |
62 | string get_meta(const string& n) const { return iface.get_meta(n); } | 70 | const string& get_meta(const string& n) const { return iface.get_meta(n); } |
63 | 71 | ||
64 | /** | 72 | /** |
65 | * fetch reference to the 'stdin' stream. | 73 | * fetch reference to the 'stdin' stream. |
@@ -98,7 +106,7 @@ namespace kingate { | |||
98 | * @return the parameter contents. | 106 | * @return the parameter contents. |
99 | * @see exception_notfound | 107 | * @see exception_notfound |
100 | */ | 108 | */ |
101 | string get_GET(const string& n) const; | 109 | const string& get_GET(const string& n) const; |
102 | /** | 110 | /** |
103 | * Check to see whether the parameter was passed via POST. | 111 | * Check to see whether the parameter was passed via POST. |
104 | * @param n the parameter name. | 112 | * @param n the parameter name. |
@@ -111,7 +119,7 @@ namespace kingate { | |||
111 | * @return the parameter contents. | 119 | * @return the parameter contents. |
112 | * @see exception_notfound | 120 | * @see exception_notfound |
113 | */ | 121 | */ |
114 | string get_POST(const string& n) const; | 122 | const string& get_POST(const string& n) const; |
115 | /** | 123 | /** |
116 | * Check to see whether the parameter was passed either via POST or | 124 | * Check to see whether the parameter was passed either via POST or |
117 | * GET. | 125 | * GET. |
@@ -126,26 +134,123 @@ namespace kingate { | |||
126 | * @return true if yes. | 134 | * @return true if yes. |
127 | * @see exception_notfound. | 135 | * @see exception_notfound. |
128 | */ | 136 | */ |
129 | string get_param(const string& n) const; | 137 | const string& get_param(const string& n) const; |
130 | 138 | ||
131 | /** | 139 | /** |
132 | * Retrieve the POST content-type (as passed via CONTENT_TYPE | 140 | * Retrieve the POST content-type (as passed via CONTENT_TYPE |
133 | * environment variable). | 141 | * environment variable). |
134 | * @return the content type. | 142 | * @return the content type. |
135 | */ | 143 | */ |
136 | const string& get_content_type() const; | 144 | const string& __deprecated get_content_type() const; |
137 | /** | 145 | /** |
138 | * Retrieve the POST content length (as passed via the | 146 | * Retrieve the POST content length (as passed via the |
139 | * CONTENT_LENGTH environment variable). | 147 | * CONTENT_LENGTH environment variable). |
140 | * @return the content length. | 148 | * @return the content length. |
141 | */ | 149 | */ |
142 | unsigned long get_content_length() const; | 150 | unsigned long __deprecated get_content_length() const; |
143 | 151 | ||
144 | /** | 152 | /** |
145 | * Check to see whether the content from stdin stream was parsed. | 153 | * Check to see whether the content from stdin stream was parsed. |
146 | * @return true if yes. | 154 | * @return true if yes. |
147 | */ | 155 | */ |
148 | bool is_content_parsed() const { return b_parsed_content; } | 156 | bool is_content_parsed() const { return b_parsed_content; } |
157 | |||
158 | /** | ||
159 | * Retrieve the HTTP header value from the HTTP_ meta-variable. | ||
160 | * (see RFC3875) | ||
161 | * @param hn header field name. | ||
162 | * @return the HTTP header value. | ||
163 | */ | ||
164 | const string& http_request_header(const string& hn) const; | ||
165 | |||
166 | /** | ||
167 | * Retrieve the AUTH_TYPE meta-variable (see RFC3875) | ||
168 | * @return authentication type. | ||
169 | */ | ||
170 | const string& auth_type() const; | ||
171 | /** | ||
172 | * Retrieve the CONTENT_LENGTH meta-variable (see RFC3875) | ||
173 | * @return size of the request message body. | ||
174 | */ | ||
175 | unsigned long cgi_gateway::content_length() const; | ||
176 | /** | ||
177 | * Retrieve the CONTENT_TYPE meta-variable (see RFC3875) | ||
178 | * @return media type of the request message body. | ||
179 | */ | ||
180 | const string& content_type() const; | ||
181 | /** | ||
182 | * Retrieve the GATEWAY_INTERFACE meta-variable (see RFC3875) | ||
183 | * @return the gateway interface dialect. | ||
184 | */ | ||
185 | const string& gateway_interface() const; | ||
186 | /** | ||
187 | * Retrieve the PATH_INFO meta-variable (see RFC3875) | ||
188 | * @return path to be interpreted by the script. | ||
189 | */ | ||
190 | const string& path_info() const; | ||
191 | /** | ||
192 | * Retrieve the PATH_TRANSLATED meta-variable (see RFC3875) | ||
193 | * @return the translated path to the document. | ||
194 | */ | ||
195 | const string& path_translated() const; | ||
196 | /** | ||
197 | * Retrieve the QUERY_STRING meta-variable (see RFC3875) | ||
198 | * @return the query string. | ||
199 | */ | ||
200 | const string& query_string() const; | ||
201 | /** | ||
202 | * Retrieve the REMOTE_ADDR meta-variable (see RFC3875) | ||
203 | * @return the network address of the remote host. | ||
204 | */ | ||
205 | const string& remote_addr() const; | ||
206 | /** | ||
207 | * Retrieve the REMOTE_HOST meta-variable (see RFC3875) | ||
208 | * @return the fully qualified domain name of the client if | ||
209 | * available. REMOTE_ADDR otherwise. | ||
210 | * @see remote_addr() | ||
211 | */ | ||
212 | const string& remote_host() const; | ||
213 | /** | ||
214 | * Retrieve the REMOTE_IDENT meta-variable (see RFC3875) | ||
215 | * @return remote user identity (see RFC1413). | ||
216 | */ | ||
217 | const string& remote_ident() const; | ||
218 | /** | ||
219 | * Retrieve the REMOTE_USER meta-variable (see RFC3875) | ||
220 | * @return the authenticated user name. | ||
221 | */ | ||
222 | const string& remote_user() const; | ||
223 | /** | ||
224 | * Retrieve the REQUEST_METHOD meta-variable (see RFC3875) | ||
225 | * @return the http request method. | ||
226 | */ | ||
227 | const string& request_method() const; | ||
228 | /** | ||
229 | * Retrieve the SCRIPT_NAME meta-variable (see RFC3875) | ||
230 | * @return the uri path identifying the script. | ||
231 | */ | ||
232 | const string& script_name() const; | ||
233 | /** | ||
234 | * Retrieve the SERVER_NAME meta-variable (see RFC3875) | ||
235 | * @return the server name of the script. | ||
236 | */ | ||
237 | const string& server_name() const; | ||
238 | /** | ||
239 | * Retrieve the SERVER_PORT meta-variable (see RFC3875) | ||
240 | * @return the port on which request was received. | ||
241 | */ | ||
242 | unsigned int server_port() const; | ||
243 | /** | ||
244 | * Retrieve the SERVER_PROTOCOL meta-variable (see RFC3875) | ||
245 | * @return the protocol used for the request. | ||
246 | */ | ||
247 | const string& server_protocol() const; | ||
248 | /** | ||
249 | * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875) | ||
250 | * @return the name and version of server software. | ||
251 | */ | ||
252 | const string& server_software() const; | ||
253 | |||
149 | private: | 254 | private: |
150 | /** | 255 | /** |
151 | * Parse the query string, putting the parameters into the map | 256 | * Parse the query string, putting the parameters into the map |
diff --git a/include/kingate/exception.h b/include/kingate/exception.h index 6ebb361..85d89ea 100644 --- a/include/kingate/exception.h +++ b/include/kingate/exception.h | |||
@@ -36,6 +36,15 @@ namespace kingate { | |||
36 | exception_notfound(const string& fi,const string& fu,int l,const string& w) | 36 | exception_notfound(const string& fi,const string& fu,int l,const string& w) |
37 | : exception(fi,fu,l,w) { } | 37 | : exception(fi,fu,l,w) { } |
38 | }; | 38 | }; |
39 | |||
40 | /** | ||
41 | * Thrown in case of unexpected server behaviour. | ||
42 | */ | ||
43 | class server_error : public exception { | ||
44 | public: | ||
45 | server_error(const string& fi,const string& fu,int l,const string& w) | ||
46 | : exception(fi,fu,l,w) { } | ||
47 | }; | ||
39 | } | 48 | } |
40 | 49 | ||
41 | #endif /* __KINGATE_EXCEPTION_H */ | 50 | #endif /* __KINGATE_EXCEPTION_H */ |
diff --git a/include/kingate/util.h b/include/kingate/util.h index 4b0dca8..6024ccf 100644 --- a/include/kingate/util.h +++ b/include/kingate/util.h | |||
@@ -3,21 +3,44 @@ | |||
3 | 3 | ||
4 | #include <string> | 4 | #include <string> |
5 | 5 | ||
6 | #ifndef __deprecated | ||
7 | #if ( __GNUC__ == 3 && __GNUC_MINOR__ > 0 ) || __GNUC__ > 3 | ||
8 | #define __deprecated __attribute__((deprecated)) | ||
9 | #else | ||
10 | #define __deprecated | ||
11 | #endif | ||
12 | #endif | ||
13 | |||
6 | namespace kingate { | 14 | namespace kingate { |
7 | using namespace std; | 15 | using namespace std; |
8 | 16 | ||
9 | /** | 17 | /** |
10 | * Escape string for passing via URL. | 18 | * Encode string for passing via URL. |
11 | * @param str string unescaped. | 19 | * @param str string unencoded. |
12 | * @return the escaped string. | 20 | * @return the encoded string. |
13 | */ | 21 | */ |
14 | string url_escape(const string& str); | 22 | string url_encode(const string& str); |
15 | /** | 23 | /** |
16 | * Remove URL-encoding from the string. | 24 | * Remove URL-encoding from the string. |
17 | * @param str the URL-encoded string. | 25 | * @param str the URL-encoded string. |
18 | * @return the unescaped string. | 26 | * @return the decoded string. |
27 | */ | ||
28 | string url_decode(const string& str); | ||
29 | |||
30 | /** | ||
31 | * deprecated alias to url_encode. | ||
32 | * @see url_encode | ||
33 | */ | ||
34 | inline string __deprecated url_escape(const string& str) { | ||
35 | return url_encode(str); | ||
36 | } | ||
37 | /** | ||
38 | * deprecated alias to url_decode. | ||
39 | * @see url_decode | ||
19 | */ | 40 | */ |
20 | string url_unescape(const string& str); | 41 | inline string __deprecated url_unescape(const string& str) { |
42 | return url_decode(str); | ||
43 | } | ||
21 | } | 44 | } |
22 | 45 | ||
23 | #endif /* __KINGATE_UTIL_H */ | 46 | #endif /* __KINGATE_UTIL_H */ |