from __future__ import absolute_import
import urllib
import urllib2
-
from urllib2 import HTTPError
-try:
- import eventlet
- eventlet.monkey_patch()
-except ImportError:
- pass
-
-if not 'eventlet' in locals():
- try:
- from gevent import monkey
- monkey.patch_all()
- except ImportError:
- pass
-
from .packages.poster.encode import multipart_encode
- from .packages.poster.streaminghttp import register_openers
+ from .packages.poster.streaminghttp import register_openers, get_handlers
__title__ = 'requests'
_handlers = []
- if self.auth or self.cookiejar:
-
- if self.auth:
-
- authr = urllib2.HTTPPasswordMgrWithDefaultRealm()
-
- authr.add_password(None, self.url, self.auth.username, self.auth.password)
- auth_handler = urllib2.HTTPBasicAuthHandler(authr)
+ if self.auth:
+ if not isinstance(self.auth.handler, (urllib2.AbstractBasicAuthHandler, urllib2.AbstractDigestAuthHandler)):
+ auth_manager.add_password(self.auth.realm, self.url, self.auth.username, self.auth.password)
+ self.auth.handler = self.auth.handler(auth_manager)
+ auth_manager.add_auth(self.url, self.auth)
- _handlers.append(auth_handler)
-
- if self.cookiejar:
-
- cookie_handler = urllib2.HTTPCookieProcessor(cookiejar)
- _handlers.append(cookie_handler)
+ _handlers.append(self.auth.handler)
- if self.cookiejar:
- cookie_handler = urllib2.HTTPCookieProcessor(cookiejar)
- _handlers.append(cookie_handler)
- if _handlers:
+ _handlers.extend(get_handlers())
opener = urllib2.build_opener(*_handlers)
return opener.open
-
else:
return urllib2.urlopen
def _build_response(self, resp):
"""Build internal Response object from given response."""
-
- self.response.status_code = resp.code
- self.response.headers = resp.info().dict or resp.headers
+
+ self.response.status_code = getattr(resp, 'code', None)
+ self.response.headers = getattr(resp.info(), 'dict', None)
+ self.response.url = getattr(resp, 'url', None)
self.response.content = resp.read()
- self.response.url = resp.url
-
+
def send(self, anyway=False):
"""Sends the request. Returns True of successful, false if not.
If there was an HTTPError during transmission,