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
if is_error:
response.error = resp
- response.url = self._build_url()
+ response.url = self.full_url
return response
else:
return data, data
-
- def _build_url(self):
+ @property
+ def full_url(self):
"""Build the actual URL to use."""
if not self.url:
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):
))
# Build the URL
- url = self._build_url()
+ url = self.full_url
# Nottin' on you.
body = None
try:
# Send the request.
-
r = conn.urlopen(
method=self.method,
- url=url,
+ url=self.path_url,
body=body,
headers=self.headers,
redirect=False,