diff options
| author | Michael Merickel <michael@merickel.org> | 2014-11-10 00:22:01 -0600 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2014-11-10 00:22:01 -0600 |
| commit | 04d2a1d642980c0392392f272090157929f71347 (patch) | |
| tree | 8f89542cd1303ea82d6adf62658bf67567276733 | |
| parent | 999945be5d5a3fb245cc3aee38ef1e3be2af6e41 (diff) | |
| parent | 5ef159eb1a86046da4c53ca9530fff0eb3b3432f (diff) | |
| download | pyramid-04d2a1d642980c0392392f272090157929f71347.tar.gz pyramid-04d2a1d642980c0392392f272090157929f71347.tar.bz2 pyramid-04d2a1d642980c0392392f272090157929f71347.zip | |
Merge pull request #1372 from marinewater/feature.httpexceptions
Additional HTTP Status Codes
| -rw-r--r-- | pyramid/httpexceptions.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/pyramid/httpexceptions.py b/pyramid/httpexceptions.py index 415dfbe7f..a30129e16 100644 --- a/pyramid/httpexceptions.py +++ b/pyramid/httpexceptions.py @@ -52,6 +52,9 @@ Exception * 422 - HTTPUnprocessableEntity * 423 - HTTPLocked * 424 - HTTPFailedDependency + * 428 - HTTPPreconditionRequired + * 429 - HTTPTooManyRequests + * 431 - HTTPRequestHeaderFieldsTooLarge HTTPServerError * 500 - HTTPInternalServerError * 501 - HTTPNotImplemented @@ -911,6 +914,62 @@ class HTTPFailedDependency(HTTPClientError): 'The method could not be performed because the requested ' 'action dependended on another action and that action failed') +class HTTPPreconditionRequired(HTTPClientError): + """ + subclass of :class:`~HTTPClientError` + + This indicates that the origin server requires the + request to be conditional. + + Its typical use is to avoid the "lost update" problem, where a client + GETs a resource's state, modifies it, and PUTs it back to the server, + when meanwhile a third party has modified the state on the server, + leading to a conflict. By requiring requests to be conditional, the + server can assure that clients are working with the correct copies. + + RFC 6585.3 + + code: 428, title: Precondition Required + """ + code = 428 + title = 'Precondition Required' + explanation = ( + 'The origin server requires the request to be conditional.') + +class HTTPTooManyRequests(HTTPClientError): + """ + subclass of :class:`~HTTPClientError` + + This indicates that the user has sent too many + requests in a given amount of time ("rate limiting"). + + RFC 6585.4 + + code: 429, title: Too Many Requests + """ + code = 429 + title = 'Too Many Requests' + explanation = ( + 'The action could not be performed because there were too ' + 'many requests by the client.') + +class HTTPRequestHeaderFieldsTooLarge(HTTPClientError): + """ + subclass of :class:`~HTTPClientError` + + This indicates that the server is unwilling to process + the request because its header fields are too large. The request MAY + be resubmitted after reducing the size of the request header fields. + + RFC 6585.5 + + code: 431, title: Request Header Fields Too Large + """ + code = 431 + title = 'Request Header Fields Too Large' + explanation = ( + 'The requests header fields were too large.') + ############################################################ ## 5xx Server Error ############################################################ |
