http: Steal download helper from Stream extension
This commit is contained in:
parent
499c1d518a
commit
0ebddbefa1
@ -1,9 +1,14 @@
|
|||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import time
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from mopidy import httpclient
|
from mopidy import httpclient
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def get_requests_session(proxy_config, user_agent):
|
def get_requests_session(proxy_config, user_agent):
|
||||||
proxy = httpclient.format_proxy(proxy_config)
|
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})
|
session.headers.update({'user-agent': full_user_agent})
|
||||||
|
|
||||||
return session
|
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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user