Statistics
| Branch: | Tag: | Revision:

root / middleware / __init__.py @ 5039a44f

History | View | Annotate | Download (744 Bytes)

1 3758cc42 Faidon Liambotis
# vim: ts=4 sts=4 et ai sw=4 fileencoding=utf-8
2 3758cc42 Faidon Liambotis
#
3 3758cc42 Faidon Liambotis
# Copyright © 2010 Greek Research and Technology Network
4 3758cc42 Faidon Liambotis
#
5 3758cc42 Faidon Liambotis
6 3758cc42 Faidon Liambotis
import re
7 3758cc42 Faidon Liambotis
8 3758cc42 Faidon Liambotis
_strip_url_re = re.compile(r'^https?://[^/]+')
9 3758cc42 Faidon Liambotis
10 3758cc42 Faidon Liambotis
class StripURLMiddleware(object):
11 3758cc42 Faidon Liambotis
    """
12 3758cc42 Faidon Liambotis
    At least some Cloud Servers API clients tend to use full URLs as request
13 3758cc42 Faidon Liambotis
    paths, contrary to all RFCs.
14 3758cc42 Faidon Liambotis

15 3758cc42 Faidon Liambotis
    This is a) wrong, b) incompatible with Django's urlconf.
16 3758cc42 Faidon Liambotis

17 3758cc42 Faidon Liambotis
    This middleware attempts to strip such URLs so that the URL dispatcher can
18 3758cc42 Faidon Liambotis
    process it normally.
19 3758cc42 Faidon Liambotis

20 3758cc42 Faidon Liambotis
    It should be inserted as early as possible in MIDDLEWARE_CLASSES
21 3758cc42 Faidon Liambotis
    """
22 3758cc42 Faidon Liambotis
23 3758cc42 Faidon Liambotis
    def process_request(self, request):
24 3758cc42 Faidon Liambotis
        request.path = re.sub(_strip_url_re, '', request.path)
25 3758cc42 Faidon Liambotis
        request.path_info = re.sub(_strip_url_re, '', request.path_info)