http: Steal download helper from Stream extension

This commit is contained in:
Thomas Adamcik 2015-08-18 22:43:10 +02:00 committed by Stein Magnus Jodal
parent 499c1d518a
commit 0ebddbefa1

View File

@ -1,9 +1,14 @@
from __future__ import absolute_import, unicode_literals
import logging
import time
import requests
from mopidy import httpclient
logger = logging.getLogger(__name__)
def get_requests_session(proxy_config, user_agent):
proxy = httpclient.format_proxy(proxy_config)
@ -14,3 +19,30 @@ def get_requests_session(proxy_config, user_agent):
session.headers.update({'user-agent': full_user_agent})
return session
def download(session, uri, timeout=1.0, chunk_size=4096):
try:
response = session.get(uri, stream=True, timeout=timeout)
except requests.exceptions.Timeout:
logger.warning('Download of %r failed due to connection timeout after '
'%.3fs', uri, timeout)
return None
except requests.exceptions.InvalidSchema:
logger.warning('%s has an unsupported schema.', uri)
return None
content = []
deadline = time.time() + timeout
for chunk in response.iter_content(chunk_size):
content.append(chunk)
if time.time() > deadline:
logger.warning('Download of %r failed due to download taking more '
'than %.3fs', uri, timeout)
return None
if not response.ok:
logger.warning('Problem downloading %r: %s', uri, response.reason)
return None
return b''.join(content)