summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--include/sitecing/exception.h275
1 files changed, 275 insertions, 0 deletions
diff --git a/include/sitecing/exception.h b/include/sitecing/exception.h
index 985fc6d..857a8e6 100644
--- a/include/sitecing/exception.h
+++ b/include/sitecing/exception.h
@@ -34,509 +34,784 @@ namespace sitecing {
34 http_status(const string& s,const string& m) 34 http_status(const string& s,const string& m)
35 : status(s), message(m) { } 35 : status(s), message(m) { }
36 virtual ~http_status() throw() { } 36 virtual ~http_status() throw() { }
37 }; 37 };
38 38
39 // per RFC 2616 39 // per RFC 2616
40 40
41 /** 41 /**
42 * Informational. 42 * Informational.
43 */ 43 */
44 class http_status_1xx : public http_status { 44 class http_status_1xx : public http_status {
45 public: 45 public:
46 /**
47 * @param s HTTP status
48 * @param m HTTP status message
49 */
46 explicit http_status_1xx(const string &s,const string& m) 50 explicit http_status_1xx(const string &s,const string& m)
47 : http_status(s,m) { } 51 : http_status(s,m) { }
48 }; 52 };
49 /** 53 /**
50 * Continue. 54 * Continue.
51 */ 55 */
52 class http_status_100 : public http_status_1xx { 56 class http_status_100 : public http_status_1xx {
53 public: 57 public:
58 /**
59 * @param m HTTP status message
60 */
54 explicit http_status_100(const string& m) 61 explicit http_status_100(const string& m)
55 : http_status_1xx("100",m) { } 62 : http_status_1xx("100",m) { }
56 explicit http_status_100() 63 explicit http_status_100()
57 : http_status_1xx("100","Continue") { } 64 : http_status_1xx("100","Continue") { }
58 }; 65 };
59 /** 66 /**
60 * Switching protocols. 67 * Switching protocols.
61 */ 68 */
62 class http_status_101 : public http_status_1xx { 69 class http_status_101 : public http_status_1xx {
63 public: 70 public:
71 /**
72 * @param m HTTP status message
73 */
64 explicit http_status_101(const string& m) 74 explicit http_status_101(const string& m)
65 : http_status_1xx("101",m) { } 75 : http_status_1xx("101",m) { }
66 explicit http_status_101() 76 explicit http_status_101()
67 : http_status_1xx("101","Switching protocols") { } 77 : http_status_1xx("101","Switching protocols") { }
68 }; 78 };
69 79
70 /** 80 /**
71 * Successful. 81 * Successful.
72 */ 82 */
73 class http_status_2xx : public http_status { 83 class http_status_2xx : public http_status {
74 public: 84 public:
85 /**
86 * @param s HTTP status message
87 * @param m HTTP status message
88 */
75 explicit http_status_2xx(const string& s,const string& m) 89 explicit http_status_2xx(const string& s,const string& m)
76 : http_status(s,m) { } 90 : http_status(s,m) { }
77 }; 91 };
78 /** 92 /**
79 * OK. 93 * OK.
80 */ 94 */
81 class http_status_200 : public http_status_2xx { 95 class http_status_200 : public http_status_2xx {
82 public: 96 public:
97 /**
98 * @param m HTTP status message
99 */
83 explicit http_status_200(const string& m) 100 explicit http_status_200(const string& m)
84 : http_status_2xx("200",m) { } 101 : http_status_2xx("200",m) { }
85 explicit http_status_200() 102 explicit http_status_200()
86 : http_status_2xx("200","OK") { } 103 : http_status_2xx("200","OK") { }
87 }; 104 };
88 /** 105 /**
89 * Created. 106 * Created.
90 */ 107 */
91 class http_status_201 : public http_status_2xx { 108 class http_status_201 : public http_status_2xx {
92 public: 109 public:
110 /**
111 * @param m HTTP status message
112 */
93 explicit http_status_201(const string& m) 113 explicit http_status_201(const string& m)
94 : http_status_2xx("201",m) { } 114 : http_status_2xx("201",m) { }
95 explicit http_status_201() 115 explicit http_status_201()
96 : http_status_2xx("201","Created") { } 116 : http_status_2xx("201","Created") { }
97 }; 117 };
98 /** 118 /**
99 * Accepted. 119 * Accepted.
100 */ 120 */
101 class http_status_202 : public http_status_2xx { 121 class http_status_202 : public http_status_2xx {
102 public: 122 public:
123 /**
124 * @param m HTTP status message
125 */
103 explicit http_status_202(const string& m) 126 explicit http_status_202(const string& m)
104 : http_status_2xx("202",m) { } 127 : http_status_2xx("202",m) { }
105 explicit http_status_202() 128 explicit http_status_202()
106 : http_status_2xx("202","Accepted") { } 129 : http_status_2xx("202","Accepted") { }
107 }; 130 };
108 /** 131 /**
109 * Non-authoritative infortmation. 132 * Non-authoritative infortmation.
110 */ 133 */
111 class http_status_203 : public http_status_2xx { 134 class http_status_203 : public http_status_2xx {
112 public: 135 public:
136 /**
137 * @param m HTTP status message
138 */
113 explicit http_status_203(const string& m) 139 explicit http_status_203(const string& m)
114 : http_status_2xx("203",m) { } 140 : http_status_2xx("203",m) { }
115 explicit http_status_203() 141 explicit http_status_203()
116 : http_status_2xx("203","Non-authoritative information") { } 142 : http_status_2xx("203","Non-authoritative information") { }
117 }; 143 };
118 /** 144 /**
119 * No content. 145 * No content.
120 */ 146 */
121 class http_status_204 : public http_status_2xx { 147 class http_status_204 : public http_status_2xx {
122 public: 148 public:
149 /**
150 * @param m HTTP status message
151 */
123 explicit http_status_204(const string& m) 152 explicit http_status_204(const string& m)
124 : http_status_2xx("204",m) { } 153 : http_status_2xx("204",m) { }
125 explicit http_status_204() 154 explicit http_status_204()
126 : http_status_2xx("204","No content") { } 155 : http_status_2xx("204","No content") { }
127 }; 156 };
128 /** 157 /**
129 * Reset content. 158 * Reset content.
130 */ 159 */
131 class http_status_205 : public http_status_2xx { 160 class http_status_205 : public http_status_2xx {
132 public: 161 public:
162 /**
163 * @param m HTTP status message
164 */
133 explicit http_status_205(const string& m) 165 explicit http_status_205(const string& m)
134 : http_status_2xx("205",m) { } 166 : http_status_2xx("205",m) { }
135 explicit http_status_205() 167 explicit http_status_205()
136 : http_status_2xx("205","Reset content") { } 168 : http_status_2xx("205","Reset content") { }
137 }; 169 };
138 /** 170 /**
139 * Partial content. 171 * Partial content.
140 */ 172 */
141 class http_status_206 : public http_status_2xx { 173 class http_status_206 : public http_status_2xx {
142 public: 174 public:
175 /**
176 * @param m HTTP status message
177 */
143 explicit http_status_206(const string& m) 178 explicit http_status_206(const string& m)
144 : http_status_2xx("206",m) { } 179 : http_status_2xx("206",m) { }
145 explicit http_status_206() 180 explicit http_status_206()
146 : http_status_2xx("206","Partial content") { } 181 : http_status_2xx("206","Partial content") { }
147 }; 182 };
148 183
149 /** 184 /**
150 * Redirection. 185 * Redirection.
151 */ 186 */
152 class http_status_3xx : public http_status { 187 class http_status_3xx : public http_status {
153 public: 188 public:
189 /**
190 * @param s HTTP status
191 * @param m HTTP status message
192 */
154 explicit http_status_3xx(const string& s,const string& m) 193 explicit http_status_3xx(const string& s,const string& m)
155 : http_status(s,m) { } 194 : http_status(s,m) { }
156 }; 195 };
157 /** 196 /**
158 * Multiple choices. 197 * Multiple choices.
159 */ 198 */
160 class http_status_300 : public http_status_3xx { 199 class http_status_300 : public http_status_3xx {
161 public: 200 public:
201 /**
202 * @param m HTTP status message
203 */
162 explicit http_status_300(const string& m) 204 explicit http_status_300(const string& m)
163 : http_status_3xx("300",m) { } 205 : http_status_3xx("300",m) { }
164 explicit http_status_300() 206 explicit http_status_300()
165 : http_status_3xx("300","Multiple choices") { } 207 : http_status_3xx("300","Multiple choices") { }
166 }; 208 };
167 /** 209 /**
168 * Moved permanently. 210 * Moved permanently.
169 */ 211 */
170 class http_status_301 : public http_status_3xx { 212 class http_status_301 : public http_status_3xx {
171 public: 213 public:
214 /**
215 * @param m HTTP status message
216 */
172 explicit http_status_301(const string& m) 217 explicit http_status_301(const string& m)
173 : http_status_3xx("301",m) { } 218 : http_status_3xx("301",m) { }
174 explicit http_status_301() 219 explicit http_status_301()
175 : http_status_3xx("301","Moved permanently") { } 220 : http_status_3xx("301","Moved permanently") { }
176 }; 221 };
177 /** 222 /**
178 * Found. 223 * Found.
179 */ 224 */
180 class http_status_302 : public http_status_3xx { 225 class http_status_302 : public http_status_3xx {
181 public: 226 public:
227 /**
228 * @param m HTTP status message
229 */
182 explicit http_status_302(const string& m) 230 explicit http_status_302(const string& m)
183 : http_status_3xx("302",m) { } 231 : http_status_3xx("302",m) { }
184 explicit http_status_302() 232 explicit http_status_302()
185 : http_status_3xx("302","Found") { } 233 : http_status_3xx("302","Found") { }
186 }; 234 };
187 /** 235 /**
188 * See other. 236 * See other.
189 */ 237 */
190 class http_status_303 : public http_status_3xx { 238 class http_status_303 : public http_status_3xx {
191 public: 239 public:
240 /**
241 * @param m HTTP status message
242 */
192 explicit http_status_303(const string& m) 243 explicit http_status_303(const string& m)
193 : http_status_3xx("303",m) { } 244 : http_status_3xx("303",m) { }
194 explicit http_status_303() 245 explicit http_status_303()
195 : http_status_3xx("303","See other") { } 246 : http_status_3xx("303","See other") { }
196 }; 247 };
197 /** 248 /**
198 * Not modified. 249 * Not modified.
199 */ 250 */
200 class http_status_304 : public http_status_3xx { 251 class http_status_304 : public http_status_3xx {
201 public: 252 public:
253 /**
254 * @param m HTTP status message
255 */
202 explicit http_status_304(const string& m) 256 explicit http_status_304(const string& m)
203 : http_status_3xx("304",m) { } 257 : http_status_3xx("304",m) { }
204 explicit http_status_304() 258 explicit http_status_304()
205 : http_status_3xx("304","Not modified") { } 259 : http_status_3xx("304","Not modified") { }
206 }; 260 };
207 /** 261 /**
208 * Use proxy. 262 * Use proxy.
209 */ 263 */
210 class http_status_305 : public http_status_3xx { 264 class http_status_305 : public http_status_3xx {
211 public: 265 public:
266 /**
267 * @param m HTTP status message
268 */
212 explicit http_status_305(const string& m) 269 explicit http_status_305(const string& m)
213 : http_status_3xx("305",m) { } 270 : http_status_3xx("305",m) { }
214 explicit http_status_305() 271 explicit http_status_305()
215 : http_status_3xx("305","Use proxy") { } 272 : http_status_3xx("305","Use proxy") { }
216 }; 273 };
217 // 306 is unused and reserved 274 // 306 is unused and reserved
218 /** 275 /**
219 * Temporary redirect. 276 * Temporary redirect.
220 */ 277 */
221 class http_status_307 : public http_status_3xx { 278 class http_status_307 : public http_status_3xx {
222 public: 279 public:
280 /**
281 * @param m HTTP status message
282 */
223 explicit http_status_307(const string& m) 283 explicit http_status_307(const string& m)
224 : http_status_3xx("307",m) { } 284 : http_status_3xx("307",m) { }
225 explicit http_status_307() 285 explicit http_status_307()
226 : http_status_3xx("307","Temporary redirect") { } 286 : http_status_3xx("307","Temporary redirect") { }
227 }; 287 };
228 288
229 /** 289 /**
230 * Error. 290 * Error.
231 */ 291 */
232 class http_status_4xx : public http_status { 292 class http_status_4xx : public http_status {
233 public: 293 public:
294 /**
295 * @param s HTTP status
296 * @param m HTTP status message
297 */
234 explicit http_status_4xx(const string& s,const string& m) 298 explicit http_status_4xx(const string& s,const string& m)
235 : http_status(s,m) { } 299 : http_status(s,m) { }
236 }; 300 };
237 /** 301 /**
238 * Bad request. 302 * Bad request.
239 */ 303 */
240 class http_status_400 : public http_status_4xx { 304 class http_status_400 : public http_status_4xx {
241 public: 305 public:
306 /**
307 * @param m HTTP status message
308 */
242 explicit http_status_400(const string& m) 309 explicit http_status_400(const string& m)
243 : http_status_4xx("400",m) { } 310 : http_status_4xx("400",m) { }
244 explicit http_status_400() 311 explicit http_status_400()
245 : http_status_4xx("400","Bad request") { } 312 : http_status_4xx("400","Bad request") { }
246 }; 313 };
247 /** 314 /**
248 * Unauthorized. 315 * Unauthorized.
249 */ 316 */
250 class http_status_401 : public http_status_4xx { 317 class http_status_401 : public http_status_4xx {
251 public: 318 public:
319 /**
320 * @param m HTTP status message
321 */
252 explicit http_status_401(const string& m) 322 explicit http_status_401(const string& m)
253 : http_status_4xx("401",m) { } 323 : http_status_4xx("401",m) { }
254 explicit http_status_401() 324 explicit http_status_401()
255 : http_status_4xx("401","Unauthorized") { } 325 : http_status_4xx("401","Unauthorized") { }
256 }; 326 };
257 /** 327 /**
258 * Payment required. 328 * Payment required.
259 */ 329 */
260 class http_status_402 : public http_status_4xx { 330 class http_status_402 : public http_status_4xx {
261 public: 331 public:
332 /**
333 * @param m HTTP status message
334 */
262 explicit http_status_402(const string& m) 335 explicit http_status_402(const string& m)
263 : http_status_4xx("402",m) { } 336 : http_status_4xx("402",m) { }
264 explicit http_status_402() 337 explicit http_status_402()
265 : http_status_4xx("402","Payment required") { } 338 : http_status_4xx("402","Payment required") { }
266 }; 339 };
267 /** 340 /**
268 * Forbidden. 341 * Forbidden.
269 */ 342 */
270 class http_status_403 : public http_status_4xx { 343 class http_status_403 : public http_status_4xx {
271 public: 344 public:
345 /**
346 * @param m HTTP status message
347 */
272 explicit http_status_403(const string& m) 348 explicit http_status_403(const string& m)
273 : http_status_4xx("403",m) { } 349 : http_status_4xx("403",m) { }
274 explicit http_status_403() 350 explicit http_status_403()
275 : http_status_4xx("403","Forbidden") { } 351 : http_status_4xx("403","Forbidden") { }
276 }; 352 };
277 /** 353 /**
278 * Not found. 354 * Not found.
279 */ 355 */
280 class http_status_404 : public http_status_4xx { 356 class http_status_404 : public http_status_4xx {
281 public: 357 public:
358 /**
359 * @param m HTTP status message
360 */
282 explicit http_status_404(const string& m) 361 explicit http_status_404(const string& m)
283 : http_status_4xx("404",m) { } 362 : http_status_4xx("404",m) { }
284 explicit http_status_404() 363 explicit http_status_404()
285 : http_status_4xx("404","Not found") { } 364 : http_status_4xx("404","Not found") { }
286 }; 365 };
287 /** 366 /**
288 * Method not allowed. 367 * Method not allowed.
289 */ 368 */
290 class http_status_405 : public http_status_4xx { 369 class http_status_405 : public http_status_4xx {
291 public: 370 public:
371 /**
372 * @param m HTTP status message
373 */
292 explicit http_status_405(const string& m) 374 explicit http_status_405(const string& m)
293 : http_status_4xx("405",m) { } 375 : http_status_4xx("405",m) { }
294 explicit http_status_405() 376 explicit http_status_405()
295 : http_status_4xx("405","Method not allowed") { } 377 : http_status_4xx("405","Method not allowed") { }
296 }; 378 };
297 /** 379 /**
298 * Not acceptable. 380 * Not acceptable.
299 */ 381 */
300 class http_status_406 : public http_status_4xx { 382 class http_status_406 : public http_status_4xx {
301 public: 383 public:
384 /**
385 * @param m HTTP status message
386 */
302 explicit http_status_406(const string& m) 387 explicit http_status_406(const string& m)
303 : http_status_4xx("406",m) { } 388 : http_status_4xx("406",m) { }
304 explicit http_status_406() 389 explicit http_status_406()
305 : http_status_4xx("406","Not acceptable") { } 390 : http_status_4xx("406","Not acceptable") { }
306 }; 391 };
307 /** 392 /**
308 * Proxy authentication required. 393 * Proxy authentication required.
309 */ 394 */
310 class http_status_407 : public http_status_4xx { 395 class http_status_407 : public http_status_4xx {
311 public: 396 public:
397 /**
398 * @param m HTTP status message
399 */
312 explicit http_status_407(const string& m) 400 explicit http_status_407(const string& m)
313 : http_status_4xx("407",m) { } 401 : http_status_4xx("407",m) { }
314 explicit http_status_407() 402 explicit http_status_407()
315 : http_status_4xx("407","Proxy authentication required") { } 403 : http_status_4xx("407","Proxy authentication required") { }
316 }; 404 };
317 /** 405 /**
318 * Request timeout. 406 * Request timeout.
319 */ 407 */
320 class http_status_408 : public http_status_4xx { 408 class http_status_408 : public http_status_4xx {
321 public: 409 public:
410 /**
411 * @param m HTTP status message
412 */
322 explicit http_status_408(const string& m) 413 explicit http_status_408(const string& m)
323 : http_status_4xx("408",m) { } 414 : http_status_4xx("408",m) { }
324 explicit http_status_408() 415 explicit http_status_408()
325 : http_status_4xx("408","Request timeout") { } 416 : http_status_4xx("408","Request timeout") { }
326 }; 417 };
327 /** 418 /**
328 * Conflict. 419 * Conflict.
329 */ 420 */
330 class http_status_409 : public http_status_4xx { 421 class http_status_409 : public http_status_4xx {
331 public: 422 public:
423 /**
424 * @param m HTTP status message
425 */
332 explicit http_status_409(const string& m) 426 explicit http_status_409(const string& m)
333 : http_status_4xx("409",m) { } 427 : http_status_4xx("409",m) { }
334 explicit http_status_409() 428 explicit http_status_409()
335 : http_status_4xx("409","Conflict") { } 429 : http_status_4xx("409","Conflict") { }
336 }; 430 };
337 /** 431 /**
338 * Gone. 432 * Gone.
339 */ 433 */
340 class http_status_410 : public http_status_4xx { 434 class http_status_410 : public http_status_4xx {
341 public: 435 public:
436 /**
437 * @param m HTTP status message
438 */
342 explicit http_status_410(const string& m) 439 explicit http_status_410(const string& m)
343 : http_status_4xx("410",m) { } 440 : http_status_4xx("410",m) { }
344 explicit http_status_410() 441 explicit http_status_410()
345 : http_status_4xx("410","Gone") { } 442 : http_status_4xx("410","Gone") { }
346 }; 443 };
347 /** 444 /**
348 * Length required. 445 * Length required.
349 */ 446 */
350 class http_status_411 : public http_status_4xx { 447 class http_status_411 : public http_status_4xx {
351 public: 448 public:
449 /**
450 * @param m HTTP status message
451 */
352 explicit http_status_411(const string& m) 452 explicit http_status_411(const string& m)
353 : http_status_4xx("411",m) { } 453 : http_status_4xx("411",m) { }
354 explicit http_status_411() 454 explicit http_status_411()
355 : http_status_4xx("411","Length required") { } 455 : http_status_4xx("411","Length required") { }
356 }; 456 };
357 /** 457 /**
358 * Precondition failed. 458 * Precondition failed.
359 */ 459 */
360 class http_status_412 : public http_status_4xx { 460 class http_status_412 : public http_status_4xx {
361 public: 461 public:
462 /**
463 * @param m HTTP status message
464 */
362 explicit http_status_412(const string& m) 465 explicit http_status_412(const string& m)
363 : http_status_4xx("412",m) { } 466 : http_status_4xx("412",m) { }
364 explicit http_status_412() 467 explicit http_status_412()
365 : http_status_4xx("412","Precondition failed") { } 468 : http_status_4xx("412","Precondition failed") { }
366 }; 469 };
367 /** 470 /**
368 * Request entity too large. 471 * Request entity too large.
369 */ 472 */
370 class http_status_413 : public http_status_4xx { 473 class http_status_413 : public http_status_4xx {
371 public: 474 public:
475 /**
476 * @param m HTTP status message
477 */
372 explicit http_status_413(const string& m) 478 explicit http_status_413(const string& m)
373 : http_status_4xx("413",m) { } 479 : http_status_4xx("413",m) { }
374 explicit http_status_413() 480 explicit http_status_413()
375 : http_status_4xx("413","Request entity too large") { } 481 : http_status_4xx("413","Request entity too large") { }
376 }; 482 };
377 /** 483 /**
378 * Request URI too long. 484 * Request URI too long.
379 */ 485 */
380 class http_status_414 : public http_status_4xx { 486 class http_status_414 : public http_status_4xx {
381 public: 487 public:
488 /**
489 * @param m HTTP status message
490 */
382 explicit http_status_414(const string& m) 491 explicit http_status_414(const string& m)
383 : http_status_4xx("414",m) { } 492 : http_status_4xx("414",m) { }
384 explicit http_status_414() 493 explicit http_status_414()
385 : http_status_4xx("414","Request URI too long") { } 494 : http_status_4xx("414","Request URI too long") { }
386 }; 495 };
387 /** 496 /**
388 * Unsupported media type. 497 * Unsupported media type.
389 */ 498 */
390 class http_status_415 : public http_status_4xx { 499 class http_status_415 : public http_status_4xx {
391 public: 500 public:
501 /**
502 * @param m HTTP status message
503 */
392 explicit http_status_415(const string& m) 504 explicit http_status_415(const string& m)
393 : http_status_4xx("415",m) { } 505 : http_status_4xx("415",m) { }
394 explicit http_status_415() 506 explicit http_status_415()
395 : http_status_4xx("415","Unsupported media type") { } 507 : http_status_4xx("415","Unsupported media type") { }
396 }; 508 };
397 /** 509 /**
398 * Requested range not satisfiable. 510 * Requested range not satisfiable.
399 */ 511 */
400 class http_status_416 : public http_status_4xx { 512 class http_status_416 : public http_status_4xx {
401 public: 513 public:
514 /**
515 * @param m HTTP status message
516 */
402 explicit http_status_416(const string& m) 517 explicit http_status_416(const string& m)
403 : http_status_4xx("416",m) { } 518 : http_status_4xx("416",m) { }
404 explicit http_status_416() 519 explicit http_status_416()
405 : http_status_4xx("416","Requested range not satisfiable") { } 520 : http_status_4xx("416","Requested range not satisfiable") { }
406 }; 521 };
407 /** 522 /**
408 * Expectation failed. 523 * Expectation failed.
409 */ 524 */
410 class http_status_417 : public http_status_4xx { 525 class http_status_417 : public http_status_4xx {
411 public: 526 public:
527 /**
528 * @param m HTTP status message
529 */
412 explicit http_status_417(const string& m) 530 explicit http_status_417(const string& m)
413 : http_status_4xx("417",m) { } 531 : http_status_4xx("417",m) { }
414 explicit http_status_417() 532 explicit http_status_417()
415 : http_status_4xx("417","Expectation failed") { } 533 : http_status_4xx("417","Expectation failed") { }
416 }; 534 };
417 535
418 /** 536 /**
419 * Server error. 537 * Server error.
420 */ 538 */
421 class http_status_5xx : public http_status { 539 class http_status_5xx : public http_status {
422 public: 540 public:
541 /**
542 * @param s HTTP status
543 * @param m HTTP status message
544 */
423 explicit http_status_5xx(const string& s,const string& m) 545 explicit http_status_5xx(const string& s,const string& m)
424 : http_status(s,m) { } 546 : http_status(s,m) { }
425 }; 547 };
426 /** 548 /**
427 * Internal server error. 549 * Internal server error.
428 */ 550 */
429 class http_status_500 : public http_status_5xx { 551 class http_status_500 : public http_status_5xx {
430 public: 552 public:
553 /**
554 * @param m HTTP status message
555 */
431 explicit http_status_500(const string& m) 556 explicit http_status_500(const string& m)
432 : http_status_5xx("500",m) { } 557 : http_status_5xx("500",m) { }
433 explicit http_status_500() 558 explicit http_status_500()
434 : http_status_5xx("500","Internal server error") { } 559 : http_status_5xx("500","Internal server error") { }
435 }; 560 };
436 /** 561 /**
437 * Not implemented. 562 * Not implemented.
438 */ 563 */
439 class http_status_501 : public http_status_5xx { 564 class http_status_501 : public http_status_5xx {
440 public: 565 public:
566 /**
567 * @param m HTTP status message
568 */
441 explicit http_status_501(const string& m) 569 explicit http_status_501(const string& m)
442 : http_status_5xx("501",m) { } 570 : http_status_5xx("501",m) { }
443 explicit http_status_501() 571 explicit http_status_501()
444 : http_status_5xx("501","Not implemented") { } 572 : http_status_5xx("501","Not implemented") { }
445 }; 573 };
446 /** 574 /**
447 * Bad gateway. 575 * Bad gateway.
448 */ 576 */
449 class http_status_502 : public http_status_5xx { 577 class http_status_502 : public http_status_5xx {
450 public: 578 public:
579 /**
580 * @param m HTTP status message
581 */
451 explicit http_status_502(const string& m) 582 explicit http_status_502(const string& m)
452 : http_status_5xx("502",m) { } 583 : http_status_5xx("502",m) { }
453 explicit http_status_502() 584 explicit http_status_502()
454 : http_status_5xx("502","Bad gateway") { } 585 : http_status_5xx("502","Bad gateway") { }
455 }; 586 };
456 /** 587 /**
457 * Service unavailable. 588 * Service unavailable.
458 */ 589 */
459 class http_status_503 : public http_status_5xx { 590 class http_status_503 : public http_status_5xx {
460 public: 591 public:
592 /**
593 * @param m HTTP status message
594 */
461 explicit http_status_503(const string& m) 595 explicit http_status_503(const string& m)
462 : http_status_5xx("503",m) { } 596 : http_status_5xx("503",m) { }
463 explicit http_status_503() 597 explicit http_status_503()
464 : http_status_5xx("503","Service unavailable") { } 598 : http_status_5xx("503","Service unavailable") { }
465 }; 599 };
466 /** 600 /**
467 * Gateway timeout. 601 * Gateway timeout.
468 */ 602 */
469 class http_status_504 : public http_status_5xx { 603 class http_status_504 : public http_status_5xx {
470 public: 604 public:
605 /**
606 * @param m HTTP status message
607 */
471 explicit http_status_504(const string& m) 608 explicit http_status_504(const string& m)
472 : http_status_5xx("504",m) { } 609 : http_status_5xx("504",m) { }
473 explicit http_status_504() 610 explicit http_status_504()
474 : http_status_5xx("504","Gateway timeout") { } 611 : http_status_5xx("504","Gateway timeout") { }
475 }; 612 };
476 /** 613 /**
477 * HTTP version not supported. 614 * HTTP version not supported.
478 */ 615 */
479 class http_status_505 : public http_status_5xx { 616 class http_status_505 : public http_status_5xx {
480 public: 617 public:
618 /**
619 * @param m HTTP status message
620 */
481 explicit http_status_505(const string& m) 621 explicit http_status_505(const string& m)
482 : http_status_5xx("505",m) { } 622 : http_status_5xx("505",m) { }
483 explicit http_status_505() 623 explicit http_status_505()
484 : http_status_5xx("505","HTTP version not supported") { } 624 : http_status_5xx("505","HTTP version not supported") { }
485 }; 625 };
486 626
487 // Aliases 627 // Aliases
488 628
629 /**
630 * Convenience alias for informational http status exceptions
631 */
489 typedef http_status_1xx http_status_informational; 632 typedef http_status_1xx http_status_informational;
633 /**
634 * @see http_status_100
635 */
490 typedef http_status_100 http_status_continue; 636 typedef http_status_100 http_status_continue;
637 /**
638 * @see http_status_101
639 */
491 typedef http_status_101 http_status_switching_protocols; 640 typedef http_status_101 http_status_switching_protocols;
492 641
642 /**
643 * Convenience alias for success http status exceptions
644 */
493 typedef http_status_2xx http_status_sucessful; 645 typedef http_status_2xx http_status_sucessful;
646 /**
647 * @see http_status_200
648 */
494 typedef http_status_200 http_status_ok; 649 typedef http_status_200 http_status_ok;
650 /**
651 * @see http_status_201
652 */
495 typedef http_status_201 http_status_created; 653 typedef http_status_201 http_status_created;
654 /**
655 * @see http_status_202
656 */
496 typedef http_status_202 http_status_accepted; 657 typedef http_status_202 http_status_accepted;
658 /**
659 * @see http_status_203
660 */
497 typedef http_status_203 http_status_non_authoritative_information; 661 typedef http_status_203 http_status_non_authoritative_information;
662 /**
663 * @see http_status_204
664 */
498 typedef http_status_204 http_status_no_content; 665 typedef http_status_204 http_status_no_content;
666 /**
667 * @see http_status_205
668 */
499 typedef http_status_205 http_status_reset_content; 669 typedef http_status_205 http_status_reset_content;
670 /**
671 * @see http_status_206
672 */
500 typedef http_status_206 http_status_partial_content; 673 typedef http_status_206 http_status_partial_content;
501 674
675 /**
676 * Convenience alias for redirection http status exceptions
677 */
502 typedef http_status_3xx http_status_redirection; 678 typedef http_status_3xx http_status_redirection;
679 /**
680 * @see http_status_200
681 */
503 typedef http_status_300 http_status_multiple_choices; 682 typedef http_status_300 http_status_multiple_choices;
683 /**
684 * @see http_status_301
685 */
504 typedef http_status_301 http_status_moved_permanently; 686 typedef http_status_301 http_status_moved_permanently;
687 /**
688 * @see http_status_302
689 */
505 typedef http_status_302 http_status_found; 690 typedef http_status_302 http_status_found;
691 /**
692 * @see http_status_303
693 */
506 typedef http_status_303 http_status_see_other; 694 typedef http_status_303 http_status_see_other;
695 /**
696 * @see http_status_304
697 */
507 typedef http_status_304 http_status_not_modified; 698 typedef http_status_304 http_status_not_modified;
699 /**
700 * @see http_status_305
701 */
508 typedef http_status_305 http_status_use_proxy; 702 typedef http_status_305 http_status_use_proxy;
509 // 306 is unused and reserved 703 // 306 is unused and reserved
704 /**
705 * @see http_status_307
706 */
510 typedef http_status_307 http_status_temporary_redirect; 707 typedef http_status_307 http_status_temporary_redirect;
511 708
709 /**
710 * Convenience alias for client error http exceptions
711 */
512 typedef http_status_4xx http_status_client_error; 712 typedef http_status_4xx http_status_client_error;
713 /**
714 * @see http_status_400
715 */
513 typedef http_status_400 http_status_bad_request; 716 typedef http_status_400 http_status_bad_request;
717 /**
718 * @see http_status_401
719 */
514 typedef http_status_401 http_status_unauthorized; 720 typedef http_status_401 http_status_unauthorized;
721 /**
722 * @see http_status_402
723 */
515 typedef http_status_402 http_status_payment_required; 724 typedef http_status_402 http_status_payment_required;
725 /**
726 * @see http_status_403
727 */
516 typedef http_status_403 http_status_forbidden; 728 typedef http_status_403 http_status_forbidden;
729 /**
730 * @see http_status_404
731 */
517 typedef http_status_404 http_status_not_found; 732 typedef http_status_404 http_status_not_found;
733 /**
734 * @see http_status_405
735 */
518 typedef http_status_405 http_status_method_not_allowed; 736 typedef http_status_405 http_status_method_not_allowed;
737 /**
738 * @see http_status_406
739 */
519 typedef http_status_406 http_status_not_acceptable; 740 typedef http_status_406 http_status_not_acceptable;
741 /**
742 * @see http_status_407
743 */
520 typedef http_status_407 http_status_proxy_authentication_required; 744 typedef http_status_407 http_status_proxy_authentication_required;
745 /**
746 * @see http_status_408
747 */
521 typedef http_status_408 http_status_request_timeout; 748 typedef http_status_408 http_status_request_timeout;
749 /**
750 * @see http_status_409
751 */
522 typedef http_status_409 http_status_conflict; 752 typedef http_status_409 http_status_conflict;
753 /**
754 * @see http_status_410
755 */
523 typedef http_status_410 http_status_gone; 756 typedef http_status_410 http_status_gone;
757 /**
758 * @see http_status_411
759 */
524 typedef http_status_411 http_status_length_required; 760 typedef http_status_411 http_status_length_required;
761 /**
762 * @see http_status_412
763 */
525 typedef http_status_412 http_status_precondition_failed; 764 typedef http_status_412 http_status_precondition_failed;
765 /**
766 * @see http_status_413
767 */
526 typedef http_status_413 http_status_request_entity_too_large; 768 typedef http_status_413 http_status_request_entity_too_large;
769 /**
770 * @see http_status_414
771 */
527 typedef http_status_414 http_status_requrest_uri_too_long; 772 typedef http_status_414 http_status_requrest_uri_too_long;
773 /**
774 * @see http_status_415
775 */
528 typedef http_status_415 http_status_unsupported_media_type; 776 typedef http_status_415 http_status_unsupported_media_type;
777 /**
778 * @see http_status_416
779 */
529 typedef http_status_416 http_status_required_range_not_satisfiable; 780 typedef http_status_416 http_status_required_range_not_satisfiable;
781 /**
782 * @see http_status_417
783 */
530 typedef http_status_417 http_status_expectation_failed; 784 typedef http_status_417 http_status_expectation_failed;
531 785
786 /**
787 * Convenience alias for server error http exceptions
788 */
532 typedef http_status_5xx http_status_server_error; 789 typedef http_status_5xx http_status_server_error;
790 /**
791 * @see http_status_500
792 */
533 typedef http_status_500 http_status_internal_server_error; 793 typedef http_status_500 http_status_internal_server_error;
794 /**
795 * @see http_status_501
796 */
534 typedef http_status_501 http_status_not_implemented; 797 typedef http_status_501 http_status_not_implemented;
798 /**
799 * @see http_status_502
800 */
535 typedef http_status_502 http_status_bad_gateway; 801 typedef http_status_502 http_status_bad_gateway;
802 /**
803 * @see http_status_503
804 */
536 typedef http_status_503 http_status_service_unavailable; 805 typedef http_status_503 http_status_service_unavailable;
806 /**
807 * @see http_status_504
808 */
537 typedef http_status_504 http_status_gateway_timeout; 809 typedef http_status_504 http_status_gateway_timeout;
810 /**
811 * @see http_status_505
812 */
538 typedef http_status_505 http_status_http_version_not_supported; 813 typedef http_status_505 http_status_http_version_not_supported;
539 814
540} 815}
541 816
542#endif /* __SITECING_EXCEPTION_H */ 817#endif /* __SITECING_EXCEPTION_H */