diff --git a/common b/common index e38599c2c5e..ae892294342 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit e38599c2c5e40d026d33528a61a1815c421a98be +Subproject commit ae892294342da555c90f69c6594277b0c546ede3 diff --git a/readthedocs/api/client.py b/readthedocs/api/client.py index c42313ed003..0259928543e 100644 --- a/readthedocs/api/client.py +++ b/readthedocs/api/client.py @@ -1,11 +1,15 @@ -"""Slumber API client""" -from __future__ import absolute_import +# -*- coding: utf-8 -*- + +"""Slumber API client.""" +from __future__ import ( + absolute_import, division, print_function, unicode_literals) + import logging -from slumber import API -from requests import Session from django.conf import settings - +from requests import Session +from requests_toolbelt.adapters import host_header_ssl +from slumber import API log = logging.getLogger(__name__) @@ -17,16 +21,17 @@ def setup_api(): session = Session() + session.mount(API_HOST, host_header_ssl.HostHeaderSSLAdapter()) session.headers.update({'Host': PRODUCTION_DOMAIN}) api_config = { 'base_url': '%s/api/v1/' % API_HOST, 'session': session, } if USER and PASS: - log.debug("Using slumber with user %s, pointed at %s", USER, API_HOST) + log.debug('Using slumber with user %s, pointed at %s', USER, API_HOST) session.auth = (USER, PASS) else: - log.warning("SLUMBER_USERNAME/PASSWORD settings are not set") + log.warning('SLUMBER_USERNAME/PASSWORD settings are not set') return API(**api_config) diff --git a/readthedocs/restapi/client.py b/readthedocs/restapi/client.py index c9cb90307ce..8a4bfbfdf62 100644 --- a/readthedocs/restapi/client.py +++ b/readthedocs/restapi/client.py @@ -1,14 +1,18 @@ +# -*- coding: utf-8 -*- + """Simple client to access our API with Slumber credentials.""" -from __future__ import absolute_import +from __future__ import ( + absolute_import, division, print_function, unicode_literals) + import logging -from slumber import API, serialize import requests from django.conf import settings -from rest_framework.renderers import JSONRenderer +from requests_toolbelt.adapters import host_header_ssl from rest_framework.parsers import JSONParser - +from rest_framework.renderers import JSONRenderer +from slumber import API, serialize log = logging.getLogger(__name__) @@ -20,7 +24,7 @@ class DrfJsonSerializer(serialize.JsonSerializer): - """Additional serialization help from the DRF parser/renderer""" + """Additional serialization help from the DRF parser/renderer.""" key = 'json-drf' @@ -33,9 +37,13 @@ def dumps(self, data): def setup_api(): session = requests.Session() + session.mount( + API_HOST, + host_header_ssl.HostHeaderSSLAdapter( + max_retries=3, + ), + ) session.headers.update({'Host': PRODUCTION_DOMAIN}) - retry_adapter = requests.adapters.HTTPAdapter(max_retries=3) - session.mount(API_HOST, retry_adapter) api_config = { 'base_url': '%s/api/v2/' % API_HOST, 'serializer': serialize.Serializer( @@ -43,15 +51,19 @@ def setup_api(): serializers=[ serialize.JsonSerializer(), DrfJsonSerializer(), - ] + ], ), 'session': session, } if USER and PASS: - log.debug("Using slumber v2 with user %s, pointed at %s", USER, API_HOST) + log.debug( + 'Using slumber v2 with user %s, pointed at %s', + USER, + API_HOST, + ) session.auth = (USER, PASS) else: - log.warning("SLUMBER_USERNAME/PASSWORD settings are not set") + log.warning('SLUMBER_USERNAME/PASSWORD settings are not set') return API(**api_config) diff --git a/requirements/pip.txt b/requirements/pip.txt index 839329c91ae..2027f3831e5 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -30,6 +30,7 @@ django-vanilla-views==1.0.5 jsonfield==2.0.2 requests==2.18.4 +requests-toolbelt==0.8.0 slumber==0.7.1 lxml==4.2.1 defusedxml==0.5.0