From: Jayson Vantuyl Date: Wed, 30 Oct 2013 08:35:54 +0000 (-0700) Subject: don't prepare URLs for oddball schemes X-Git-Tag: v2.1.0~30^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a9ec28a1b4288e6368f855f442817633d3a7f7da;p=services%2Fpython-requests.git don't prepare URLs for oddball schemes --- diff --git a/requests/models.py b/requests/models.py index a67868e..a9ccaf7 100644 --- a/requests/models.py +++ b/requests/models.py @@ -327,6 +327,11 @@ class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): raise MissingSchema("Invalid URL {0!r}: No schema supplied. " "Perhaps you meant http://{0}?".format(url)) + # Don't do any URL preparation for oddball schemes + if scheme.lower() not in ('http', 'https'): + self.url = url + return + if not host: raise InvalidURL("Invalid URL %r: No host supplied" % url) diff --git a/requests/packages/urllib3/util.py b/requests/packages/urllib3/util.py index cf934d4..19b7c7e 100644 --- a/requests/packages/urllib3/util.py +++ b/requests/packages/urllib3/util.py @@ -365,6 +365,8 @@ def parse_url(url): # Scheme if '://' in url: scheme, url = url.split('://', 1) + elif ':' in url: + scheme, url = url.split(':', 1) # Find the earliest Authority Terminator # (http://tools.ietf.org/html/rfc3986#section-3.2) diff --git a/test_requests.py b/test_requests.py index a593db3..a67be62 100755 --- a/test_requests.py +++ b/test_requests.py @@ -678,6 +678,14 @@ class RequestsTestCase(unittest.TestCase): assert p.headers['Content-Length'] == length + def test_oddball_schemes_dont_check_URLs(self): + r1 = requests.Request('GET', 'data:image/gif;base64,R0lGODlhAQABAHAAACH5BAUAAAAALAAAAAABAAEAAAICRAEAOw==') + r1.prepare() + r2 = requests.Request('GET', 'file:///etc/passwd') + r2.prepare() + r3 = requests.Request('GET', 'magnet:?xt=urn:btih:be08f00302bc2d1d3cfa3af02024fa647a271431') + r3.prepare() + class TestContentEncodingDetection(unittest.TestCase): def test_none(self):