This commit is contained in:
Ryan Castner 2017-11-28 19:36:50 +00:00 committed by GitHub
commit fd1f1cb054
2 changed files with 9 additions and 3 deletions

View File

@ -138,6 +138,12 @@ except ImportError:
# requests is optional # requests is optional
try: try:
import requests import requests
# requests >=2.16.0 no longer includes vendored packages and lists urllib3 as a dependency
try:
import urllib3
except ImportError:
# requests installation is <2.16.0
urllib3 = requests.packages.urllib3
except ImportError: except ImportError:
requests = None requests = None

View File

@ -17,7 +17,7 @@ from django.utils import six
from django.utils.encoding import force_bytes from django.utils.encoding import force_bytes
from django.utils.http import urlencode from django.utils.http import urlencode
from rest_framework.compat import coreapi, requests from rest_framework.compat import coreapi, requests, urllib3
from rest_framework.settings import api_settings from rest_framework.settings import api_settings
@ -27,7 +27,7 @@ def force_authenticate(request, user=None, token=None):
if requests is not None: if requests is not None:
class HeaderDict(requests.packages.urllib3._collections.HTTPHeaderDict): class HeaderDict(urllib3._collections.HTTPHeaderDict):
def get_all(self, key, default): def get_all(self, key, default):
return self.getheaders(key) return self.getheaders(key)
@ -98,7 +98,7 @@ if requests is not None:
# Build the underlying urllib3.HTTPResponse # Build the underlying urllib3.HTTPResponse
raw_kwargs['body'] = io.BytesIO(b''.join(wsgi_response)) raw_kwargs['body'] = io.BytesIO(b''.join(wsgi_response))
raw = requests.packages.urllib3.HTTPResponse(**raw_kwargs) raw = urllib3.HTTPResponse(**raw_kwargs)
# Build the requests.Response # Build the requests.Response
return self.build_response(request, raw) return self.build_response(request, raw)