author | Michael Krelin <hacker@klever.net> | 2005-07-19 13:08:58 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2005-07-19 13:08:58 (UTC) |
commit | db69589bdc32c60b1fce6700a35d4126058bf7bc (patch) (unidiff) | |
tree | 34727675eaeb4210436a9b61119c7484dbc0cd97 /include/kingate | |
parent | 9cc67ea5af191d5bc1f26506c35d8387a05361c2 (diff) | |
download | kingate-db69589bdc32c60b1fce6700a35d4126058bf7bc.zip kingate-db69589bdc32c60b1fce6700a35d4126058bf7bc.tar.gz kingate-db69589bdc32c60b1fce6700a35d4126058bf7bc.tar.bz2 |
turned cookies into multimap
-rw-r--r-- | include/kingate/cgi_gateway.h | 1 | ||||
-rw-r--r-- | include/kingate/cookies.h | 4 |
2 files changed, 2 insertions, 3 deletions
diff --git a/include/kingate/cgi_gateway.h b/include/kingate/cgi_gateway.h index a26b0ae..087f7d0 100644 --- a/include/kingate/cgi_gateway.h +++ b/include/kingate/cgi_gateway.h | |||
@@ -214,112 +214,111 @@ namespace kingate { | |||
214 | /** | 214 | /** |
215 | * Retrieve the HTTP header value from the HTTP_ meta-variable. | 215 | * Retrieve the HTTP header value from the HTTP_ meta-variable. |
216 | * (see RFC3875) | 216 | * (see RFC3875) |
217 | * @param hn header field name. | 217 | * @param hn header field name. |
218 | * @return the HTTP header value. | 218 | * @return the HTTP header value. |
219 | */ | 219 | */ |
220 | const string& http_request_header(const string& hn) const; | 220 | const string& http_request_header(const string& hn) const; |
221 | 221 | ||
222 | /** | 222 | /** |
223 | * Retrieve the AUTH_TYPE meta-variable (see RFC3875) | 223 | * Retrieve the AUTH_TYPE meta-variable (see RFC3875) |
224 | * @return authentication type. | 224 | * @return authentication type. |
225 | */ | 225 | */ |
226 | const string& auth_type() const; | 226 | const string& auth_type() const; |
227 | /** | 227 | /** |
228 | * Retrieve the CONTENT_LENGTH meta-variable (see RFC3875) | 228 | * Retrieve the CONTENT_LENGTH meta-variable (see RFC3875) |
229 | * @return size of the request message body. | 229 | * @return size of the request message body. |
230 | */ | 230 | */ |
231 | unsigned long content_length() const; | 231 | unsigned long content_length() const; |
232 | /** | 232 | /** |
233 | * Retrieve the CONTENT_TYPE meta-variable (see RFC3875) | 233 | * Retrieve the CONTENT_TYPE meta-variable (see RFC3875) |
234 | * @return media type of the request message body. | 234 | * @return media type of the request message body. |
235 | */ | 235 | */ |
236 | const string& content_type() const; | 236 | const string& content_type() const; |
237 | /** | 237 | /** |
238 | * Retrieve the GATEWAY_INTERFACE meta-variable (see RFC3875) | 238 | * Retrieve the GATEWAY_INTERFACE meta-variable (see RFC3875) |
239 | * @return the gateway interface dialect. | 239 | * @return the gateway interface dialect. |
240 | */ | 240 | */ |
241 | const string& gateway_interface() const; | 241 | const string& gateway_interface() const; |
242 | /** | 242 | /** |
243 | * Retrieve the PATH_INFO meta-variable (see RFC3875) | 243 | * Retrieve the PATH_INFO meta-variable (see RFC3875) |
244 | * @return path to be interpreted by the script. | 244 | * @return path to be interpreted by the script. |
245 | */ | 245 | */ |
246 | const string& path_info() const; | 246 | const string& path_info() const; |
247 | /** | 247 | /** |
248 | * Retrieve the PATH_TRANSLATED meta-variable (see RFC3875) | 248 | * Retrieve the PATH_TRANSLATED meta-variable (see RFC3875) |
249 | * @return the translated path to the document. | 249 | * @return the translated path to the document. |
250 | */ | 250 | */ |
251 | const string& path_translated() const; | 251 | const string& path_translated() const; |
252 | /** | 252 | /** |
253 | * Retrieve the QUERY_STRING meta-variable (see RFC3875) | 253 | * Retrieve the QUERY_STRING meta-variable (see RFC3875) |
254 | * @return the query string. | 254 | * @return the query string. |
255 | */ | 255 | */ |
256 | const string& query_string() const; | 256 | const string& query_string() const; |
257 | /** | 257 | /** |
258 | * Retrieve the REMOTE_ADDR meta-variable (see RFC3875) | 258 | * Retrieve the REMOTE_ADDR meta-variable (see RFC3875) |
259 | * @return the network address of the remote host. | 259 | * @return the network address of the remote host. |
260 | */ | 260 | */ |
261 | const string& remote_addr() const; | 261 | const string& remote_addr() const; |
262 | /** | 262 | /** |
263 | * Retrieve the REMOTE_HOST meta-variable (see RFC3875) | 263 | * Retrieve the REMOTE_HOST meta-variable (see RFC3875) |
264 | * @return the fully qualified domain name of the client if | 264 | * @return the fully qualified domain name of the client if |
265 | * available. REMOTE_ADDR otherwise. | 265 | * available. REMOTE_ADDR otherwise. |
266 | * @see remote_addr() | 266 | * @see remote_addr() |
267 | */ | 267 | */ |
268 | const string& remote_host() const; | 268 | const string& remote_host() const; |
269 | /** | 269 | /** |
270 | * Retrieve the REMOTE_IDENT meta-variable (see RFC3875) | 270 | * Retrieve the REMOTE_IDENT meta-variable (see RFC3875) |
271 | * @return remote user identity (see RFC1413). | 271 | * @return remote user identity (see RFC1413). |
272 | */ | 272 | */ |
273 | const string& remote_ident() const; | 273 | const string& remote_ident() const; |
274 | /** | 274 | /** |
275 | * Retrieve the REMOTE_USER meta-variable (see RFC3875) | 275 | * Retrieve the REMOTE_USER meta-variable (see RFC3875) |
276 | * @return the authenticated user name. | 276 | * @return the authenticated user name. |
277 | */ | 277 | */ |
278 | const string& remote_user() const; | 278 | const string& remote_user() const; |
279 | /** | 279 | /** |
280 | * Retrieve the REQUEST_METHOD meta-variable (see RFC3875) | 280 | * Retrieve the REQUEST_METHOD meta-variable (see RFC3875) |
281 | * @return the http request method. | 281 | * @return the http request method. |
282 | */ | 282 | */ |
283 | const string& request_method() const; | 283 | const string& request_method() const; |
284 | /** | 284 | /** |
285 | * Retrieve the SCRIPT_NAME meta-variable (see RFC3875) | 285 | * Retrieve the SCRIPT_NAME meta-variable (see RFC3875) |
286 | * @return the uri path identifying the script. | 286 | * @return the uri path identifying the script. |
287 | */ | 287 | */ |
288 | const string& script_name() const; | 288 | const string& script_name() const; |
289 | /** | 289 | /** |
290 | * Retrieve the SERVER_NAME meta-variable (see RFC3875) | 290 | * Retrieve the SERVER_NAME meta-variable (see RFC3875) |
291 | * @return the server name of the script. | 291 | * @return the server name of the script. |
292 | */ | 292 | */ |
293 | const string& server_name() const; | 293 | const string& server_name() const; |
294 | /** | 294 | /** |
295 | * Retrieve the SERVER_PORT meta-variable (see RFC3875) | 295 | * Retrieve the SERVER_PORT meta-variable (see RFC3875) |
296 | * @return the port on which request was received. | 296 | * @return the port on which request was received. |
297 | */ | 297 | */ |
298 | unsigned int server_port() const; | 298 | unsigned int server_port() const; |
299 | /** | 299 | /** |
300 | * Retrieve the SERVER_PROTOCOL meta-variable (see RFC3875) | 300 | * Retrieve the SERVER_PROTOCOL meta-variable (see RFC3875) |
301 | * @return the protocol used for the request. | 301 | * @return the protocol used for the request. |
302 | */ | 302 | */ |
303 | const string& server_protocol() const; | 303 | const string& server_protocol() const; |
304 | /** | 304 | /** |
305 | * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875) | 305 | * Retrieve the SERVER_SOFTWARE meta-variable (see RFC3875) |
306 | * @return the name and version of server software. | 306 | * @return the name and version of server software. |
307 | */ | 307 | */ |
308 | const string& server_software() const; | 308 | const string& server_software() const; |
309 | 309 | ||
310 | private: | ||
311 | /** | 310 | /** |
312 | * Parse the query string, putting the parameters into the map | 311 | * Parse the query string, putting the parameters into the map |
313 | * specified. | 312 | * specified. |
314 | * @param q the query string. | 313 | * @param q the query string. |
315 | * @param p destination parameters map. | 314 | * @param p destination parameters map. |
316 | */ | 315 | */ |
317 | static void parse_query(string& q,params_t& p); | 316 | static void parse_query(string& q,params_t& p); |
318 | }; | 317 | }; |
319 | 318 | ||
320 | } | 319 | } |
321 | 320 | ||
322 | #endif /* __KINGATE_CGI_GATEWAY_H */ | 321 | #endif /* __KINGATE_CGI_GATEWAY_H */ |
323 | /* | 322 | /* |
324 | * vim:set ft=cpp: | 323 | * vim:set ft=cpp: |
325 | */ | 324 | */ |
diff --git a/include/kingate/cookies.h b/include/kingate/cookies.h index 83ef0c6..a1e813c 100644 --- a/include/kingate/cookies.h +++ b/include/kingate/cookies.h | |||
@@ -162,139 +162,139 @@ namespace kingate { | |||
162 | * @see has_expires() | 162 | * @see has_expires() |
163 | * @see unset_expires() | 163 | * @see unset_expires() |
164 | */ | 164 | */ |
165 | const string& get_expires() const; | 165 | const string& get_expires() const; |
166 | 166 | ||
167 | /** | 167 | /** |
168 | * @return true if cookie has comment. | 168 | * @return true if cookie has comment. |
169 | * @see set_comment() | 169 | * @see set_comment() |
170 | * @see get_comment() | 170 | * @see get_comment() |
171 | * @see unset_comment() | 171 | * @see unset_comment() |
172 | */ | 172 | */ |
173 | bool has_comment() const; | 173 | bool has_comment() const; |
174 | /** | 174 | /** |
175 | * @return true if cookie has domain. | 175 | * @return true if cookie has domain. |
176 | * @see set_domain() | 176 | * @see set_domain() |
177 | * @see get_domain() | 177 | * @see get_domain() |
178 | * @see unset_domain() | 178 | * @see unset_domain() |
179 | */ | 179 | */ |
180 | bool has_domain() const; | 180 | bool has_domain() const; |
181 | /** | 181 | /** |
182 | * @return true if cookie has max-age. | 182 | * @return true if cookie has max-age. |
183 | * @see set_max_age() | 183 | * @see set_max_age() |
184 | * @see get_max_age() | 184 | * @see get_max_age() |
185 | * @see unset_max_age() | 185 | * @see unset_max_age() |
186 | */ | 186 | */ |
187 | bool has_max_age() const; | 187 | bool has_max_age() const; |
188 | /** | 188 | /** |
189 | * @return true if cookie has path. | 189 | * @return true if cookie has path. |
190 | * @see set_path() | 190 | * @see set_path() |
191 | * @see get_path() | 191 | * @see get_path() |
192 | * @see unset_path() | 192 | * @see unset_path() |
193 | */ | 193 | */ |
194 | bool has_path() const; | 194 | bool has_path() const; |
195 | 195 | ||
196 | /** | 196 | /** |
197 | * @return true if cookie has expiration time. | 197 | * @return true if cookie has expiration time. |
198 | * @see set_expires() | 198 | * @see set_expires() |
199 | * @see get_expires() | 199 | * @see get_expires() |
200 | * @see unset_expires() | 200 | * @see unset_expires() |
201 | */ | 201 | */ |
202 | bool has_expires() const; | 202 | bool has_expires() const; |
203 | 203 | ||
204 | /** | 204 | /** |
205 | * rid cookie of comment. | 205 | * rid cookie of comment. |
206 | * @see set_comment() | 206 | * @see set_comment() |
207 | * @see get_comment() | 207 | * @see get_comment() |
208 | * @see has_comment() | 208 | * @see has_comment() |
209 | */ | 209 | */ |
210 | void unset_comment(); | 210 | void unset_comment(); |
211 | /** | 211 | /** |
212 | * rid cookie of domain. | 212 | * rid cookie of domain. |
213 | * @see set_domain() | 213 | * @see set_domain() |
214 | * @see get_domain() | 214 | * @see get_domain() |
215 | * @see has_domain() | 215 | * @see has_domain() |
216 | */ | 216 | */ |
217 | void unset_domain(); | 217 | void unset_domain(); |
218 | /** | 218 | /** |
219 | * rid cookie of max-age. | 219 | * rid cookie of max-age. |
220 | * @see set_max_age() | 220 | * @see set_max_age() |
221 | * @see get_max_age() | 221 | * @see get_max_age() |
222 | * @see has_max_age() | 222 | * @see has_max_age() |
223 | */ | 223 | */ |
224 | void unset_max_age(); | 224 | void unset_max_age(); |
225 | /** | 225 | /** |
226 | * rid cookie of path. | 226 | * rid cookie of path. |
227 | * @see set_path() | 227 | * @see set_path() |
228 | * @see get_path() | 228 | * @see get_path() |
229 | * @see has_path() | 229 | * @see has_path() |
230 | */ | 230 | */ |
231 | void unset_path(); | 231 | void unset_path(); |
232 | 232 | ||
233 | /** | 233 | /** |
234 | * rid cookie of expiration time. | 234 | * rid cookie of expiration time. |
235 | * @see set_expires() | 235 | * @see set_expires() |
236 | * @see get_expires() | 236 | * @see get_expires() |
237 | * @see has_expires() | 237 | * @see has_expires() |
238 | */ | 238 | */ |
239 | void unset_expires(); | 239 | void unset_expires(); |
240 | 240 | ||
241 | /** | 241 | /** |
242 | * render the 'Set-Cookie' HTTP header according to RFC2109. | 242 | * render the 'Set-Cookie' HTTP header according to RFC2109. |
243 | * Absolutely useless, only works with lynx. | 243 | * Absolutely useless, only works with lynx. |
244 | * @return the rendered header content. | 244 | * @return the rendered header content. |
245 | */ | 245 | */ |
246 | string set_cookie_header_rfc2109() const; | 246 | string set_cookie_header_rfc2109() const; |
247 | /** | 247 | /** |
248 | * render the 'Set-Cookie' header according to the early vague | 248 | * render the 'Set-Cookie' header according to the early vague |
249 | * netscape specs and common practice. | 249 | * netscape specs and common practice. |
250 | * @return the rendered header content. | 250 | * @return the rendered header content. |
251 | */ | 251 | */ |
252 | string set_cookie_header() const; | 252 | string set_cookie_header() const; |
253 | }; | 253 | }; |
254 | 254 | ||
255 | /** | 255 | /** |
256 | * Cookies container class. | 256 | * Cookies container class. |
257 | */ | 257 | */ |
258 | class cookies_t : public map<string,cookie> { | 258 | class cookies_t : public multimap<string,cookie> { |
259 | public: | 259 | public: |
260 | 260 | ||
261 | cookies_t() { } | 261 | cookies_t() { } |
262 | /** | 262 | /** |
263 | * @param s 'Cookie:' HTTP header contents to parse. | 263 | * @param s 'Cookie:' HTTP header contents to parse. |
264 | */ | 264 | */ |
265 | cookies_t(const string& s) { parse_cookies(s); } | 265 | cookies_t(const string& s) { parse_cookies(s); } |
266 | 266 | ||
267 | /** | 267 | /** |
268 | * @param c cookie to set. | 268 | * @param c cookie to set. |
269 | */ | 269 | */ |
270 | void set_cookie(const cookie& c) { (*this)[c.get_name()]=c; } | 270 | void set_cookie(const cookie& c); |
271 | /** | 271 | /** |
272 | * @param n cookie name to remove. | 272 | * @param n cookie name to remove. |
273 | */ | 273 | */ |
274 | void unset_cookie(const key_type& n) { erase(n); } | 274 | void unset_cookie(const key_type& n) { erase(n); } |
275 | /** | 275 | /** |
276 | * @param n cookie name. | 276 | * @param n cookie name. |
277 | * @return true if exists. | 277 | * @return true if exists. |
278 | */ | 278 | */ |
279 | bool has_cookie(const key_type& n) const; | 279 | bool has_cookie(const key_type& n) const; |
280 | /** | 280 | /** |
281 | * Return the named cookie if one exists. | 281 | * Return the named cookie if one exists. |
282 | * @param n cookie name. | 282 | * @param n cookie name. |
283 | * @return const reference to cookie object. | 283 | * @return const reference to cookie object. |
284 | */ | 284 | */ |
285 | const cookie& get_cookie(const key_type& n) const; | 285 | const cookie& get_cookie(const key_type& n) const; |
286 | /** | 286 | /** |
287 | * Return the named cookie if one exists. | 287 | * Return the named cookie if one exists. |
288 | * @param n cookie name. | 288 | * @param n cookie name. |
289 | * @return reference to cookie object. | 289 | * @return reference to cookie object. |
290 | */ | 290 | */ |
291 | cookie& get_cookie(const key_type& n); | 291 | cookie& get_cookie(const key_type& n); |
292 | 292 | ||
293 | /** | 293 | /** |
294 | * @param s HTTP 'Cookie' header content. | 294 | * @param s HTTP 'Cookie' header content. |
295 | */ | 295 | */ |
296 | void parse_cookies(const string& s); | 296 | void parse_cookies(const string& s); |
297 | }; | 297 | }; |
298 | } | 298 | } |
299 | 299 | ||
300 | #endif /* __KINGATE_COOKIES_H */ | 300 | #endif /* __KINGATE_COOKIES_H */ |