From: Kenneth Reitz Date: Tue, 15 Nov 2011 14:52:27 +0000 (-0500) Subject: Only send URL path to servers X-Git-Tag: v0.8.1~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4504953212816c4de0cd8177faf1270e42cb31f9;p=services%2Fpython-requests.git Only send URL path to servers Closes #256 --- diff --git a/requests/models.py b/requests/models.py index 62d39a8..97237e7 100644 --- a/requests/models.py +++ b/requests/models.py @@ -11,7 +11,7 @@ import urllib import zlib from Cookie import SimpleCookie -from urlparse import urlparse, urlunparse, urljoin +from urlparse import urlparse, urlunparse, urljoin, urlsplit from datetime import datetime from .auth import dispatch as auth_dispatch @@ -181,7 +181,7 @@ class Request(object): if is_error: response.error = resp - response.url = self._build_url() + response.url = self.full_url return response @@ -281,8 +281,8 @@ class Request(object): else: return data, data - - def _build_url(self): + @property + def full_url(self): """Build the actual URL to use.""" if not self.url: @@ -300,15 +300,41 @@ class Request(object): path = path.encode('utf-8') path = urllib.quote(urllib.unquote(path)) - self.url = str(urlunparse([ scheme, netloc, path, params, query, fragment ])) + + url = str(urlunparse([ scheme, netloc, path, params, query, fragment ])) if self._enc_params: - if urlparse(self.url).query: - return '%s&%s' % (self.url, self._enc_params) + if urlparse(url).query: + return '%s&%s' % (url, self._enc_params) else: - return '%s?%s' % (self.url, self._enc_params) + return '%s?%s' % (url, self._enc_params) else: - return self.url + return url + + @property + def path_url(self): + """Build the path URL to use.""" + + url = [] + + p = urlsplit(self.full_url) + + # Proxies use full URLs. + if p.scheme in self.proxies: + return self.full_url + + path = p.path + if not path: + path = '/' + url.append(path) + + query = p.query + if query: + url.append('?') + url.append(query) + + return ''.join(url) + def send(self, anyway=False, prefetch=False): @@ -329,7 +355,7 @@ class Request(object): )) # Build the URL - url = self._build_url() + url = self.full_url # Nottin' on you. body = None @@ -406,10 +432,9 @@ class Request(object): try: # Send the request. - r = conn.urlopen( method=self.method, - url=url, + url=self.path_url, body=body, headers=self.headers, redirect=False,