summaryrefslogtreecommitdiff
path: root/repoze/bfg/request.py
blob: 1c6bae1da628fc62b7aaab76117d5076cd55c4bb (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
42
43
44
45
from zope.component import queryUtility
from zope.deprecation import deprecated
from zope.interface import implements
from zope.interface.interface import InterfaceClass

from webob import Request as WebobRequest

from repoze.bfg.interfaces import IRequest
from repoze.bfg.interfaces import IRouteRequest

def make_request_ascii(event):
    """ An event handler that causes the request charset to be ASCII;
    used as an INewRequest subscriber so code written before 0.7.0 can
    continue to work without a change"""
    request = event.request
    request.charset = None

class Request(WebobRequest):
    implements(IRequest)
    charset = 'utf-8'

def request_factory(environ):
    if 'bfg.routes.route' in environ:
        route = environ['bfg.routes.route']
        factory = queryUtility(IRouteRequest, name=route.name)
        if factory is not None:
            return factory(environ)
    return Request(environ)

def create_route_request_factory(name):
    iface = InterfaceClass('%s_IRequest' % name, (IRouteRequest,))
        
    class RouteRequest(WebobRequest):
        implements(iface)
        charset = 'utf-8'

    return RouteRequest

from repoze.bfg.threadlocal import get_current_request as get_request # b/c

deprecated('get_request',
           'As of repoze.bfg 1.0, any import of get_request from'
           '``repoze.bfg.request`` is '
           'deprecated.  Use ``from repoze.bfg.threadlocal import '
           'get_current_request instead.')