blob: 8d938e974b4d67b5c65782638d40ffdfb384cf26 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
from zope.interface import implements
from webob import Request as WebobRequest
import repoze.bfg.interfaces
# We use 'precooked' Request subclasses that correspond to HTTP
# request methods within ``router.py`` when constructing a request
# object rather than using ``alsoProvides`` to attach the proper
# interface to an unsubclassed webob.Request. This pattern is purely
# an optimization (e.g. preventing calls to ``alsoProvides`` means the
# difference between 590 r/s and 690 r/s on a MacBook 2GHz). These
# classes are *not* APIs. None of these classes, nor the
# ``HTTP_METHOD_FACTORIES`` lookup dict should be imported directly by
# user code.
class Request(WebobRequest):
implements(repoze.bfg.interfaces.IRequest)
class GETRequest(WebobRequest):
implements(repoze.bfg.interfaces.IGETRequest)
class POSTRequest(WebobRequest):
implements(repoze.bfg.interfaces.IPOSTRequest)
class PUTRequest(WebobRequest):
implements(repoze.bfg.interfaces.IPUTRequest)
class DELETERequest(WebobRequest):
implements(repoze.bfg.interfaces.IDELETERequest)
class HEADRequest(WebobRequest):
implements(repoze.bfg.interfaces.IHEADRequest)
HTTP_METHOD_FACTORIES = {
'GET':GETRequest,
'POST':POSTRequest,
'PUT':PUTRequest,
'DELETE':DELETERequest,
'HEAD':HEADRequest,
}
|