From: Kenneth Reitz Date: Sun, 13 Feb 2011 23:26:17 +0000 (-0500) Subject: parameters working for GETs now. This is awesome. X-Git-Tag: v0.2.0~43 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4f9d598ff486396d9ad45c7e402abe099dec8f4a;p=services%2Fpython-requests.git parameters working for GETs now. This is awesome. --- diff --git a/requests/core.py b/requests/core.py index 259ea29..b4d6047 100644 --- a/requests/core.py +++ b/requests/core.py @@ -50,10 +50,30 @@ class Request(object): 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. @@ -65,32 +85,20 @@ class Request(object): 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 @@ -99,7 +107,7 @@ class Request(object): success = True - except Exception: + except RequestException: raise RequestException @@ -213,6 +221,7 @@ def get(url, params={}, headers={}, auth=None): r.method = 'GET' r.url = url + r.params = params r.headers = headers r.auth = _detect_auth(url, auth)