raise InvalidMethod()
object.__setattr__(self, name, value)
-
+
def _checks(self):
pass
+
+
+ def _get_opener(self):
+ """ Creates appropriate opener object for urllib2.
+ """
+
+ if self.auth:
+
+ # create a password manager
+ authr = urllib2.HTTPPasswordMgrWithDefaultRealm()
+
+ authr.add_password(None, self.url, self.auth.username, self.auth.password)
+ handler = urllib2.HTTPBasicAuthHandler(authr)
+ opener = urllib2.build_opener(handler)
+
+ # use the opener to fetch a URL
+ return opener.open
+ else:
+ return urllib2.urlopen
+
def send(self, anyway=False):
"""Sends the request.
if self.method.lower() == 'get':
if (not self.sent) or anyway:
try:
- req = urllib2.Request(self.url)
-
- if self.headers:
- r.headers = self.headers
-
- # url encode form data if it's a dict
- if isinstance(self.data, dict):
- req.params = urllib.urlencode(self.params)
+ # url encode GET params if it's a dict
+ if isinstance(self.params, dict):
+ params = urllib.urlencode(self.params)
else:
- req.params = self.paams
- if self.auth:
+ params = self.params
- # create a password manager
- password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
+ req = urllib2.Request("%s?%s" % (self.url, params))
- # Add the username and password.
- # If we knew the realm, we could use it instead of ``None``.
- password_mgr.add_password(None, self.url, self.auth.username, self.auth.password)
- handler = urllib2.HTTPBasicAuthHandler(password_mgr)
- opener = urllib2.build_opener(handler)
+ if self.headers:
+ req.headers = self.headers
- # use the opener to fetch a URL
- resp = opener.open(req)
- else:
- resp = urllib2.urlopen(req)
+ opener = self._get_opener()
+ resp = opener(req)
self.response.status_code = resp.code
self.response.headers = resp.info().dict
success = True
- except Exception:
+ except RequestException:
raise RequestException
r.method = 'GET'
r.url = url
+ r.params = params
r.headers = headers
r.auth = _detect_auth(url, auth)