"""
Cobbler DownloadManager
"""
import requests
[docs]class DownloadManager(object):
def __init__(self, collection_mgr, logger=None):
"""
Constructor
"""
self.collection_mgr = collection_mgr
self.settings = collection_mgr.settings()
self.logger = logger
self.cert = ()
if self.settings.proxy_url_ext:
# requests wants a dict like: protocol: proxy_uri
self.proxies = self.settings.proxy_url_ext
else:
self.proxies = {}
[docs] def urlread(self, url, proxies=None, cert=None):
if proxies is None:
proxies = self.proxies
if cert is None:
cert = self.cert
return requests.get(url, proxies=proxies, cert=cert)
[docs] def download_file(self, url, dst, proxies=None, cert=None):
if proxies is None:
proxies = self.proxies
if cert is None:
cert = self.cert
response = requests.get(url, stream=True, proxies=proxies, cert=cert)
with open(dst, "wb") as handle:
for chunk in response.iter_content(chunk_size=512):
# filter out keep-alive new chunks
if chunk:
handle.write(chunk)