View | Details | Raw Unified | Return to bug 35115
Collapse All | Expand All

(-)src/images.py (-13 / +20 lines)
 Lines 41-46    Link Here 
41
import hashlib
41
import hashlib
42
import lzma
42
import lzma
43
import httplib
43
import httplib
44
import urllib2
44
import urlparse
45
import urlparse
45
import contextlib
46
import contextlib
46
import re
47
import re
 Lines 191-210    Link Here 
191
	ucc/image/path via a HTTP HEAD request.'''
192
	ucc/image/path via a HTTP HEAD request.'''
192
193
193
	url = '%s/%s' % (UCC_BASE_URL, filename)
194
	url = '%s/%s' % (UCC_BASE_URL, filename)
194
	parts = urlparse.urlparse(url)
195
	request = urllib2.Request(url)
195
	if parts.scheme == 'http':
196
	request.get_method = lambda : 'HEAD'
196
		connection = httplib.HTTPConnection(parts.hostname)
197
	try:
197
	elif parts.scheme == 'https':
198
		response = urllib2.urlopen(request)
198
		connection = httplib.HTTPSConnection(parts.hostname)
199
	except urllib2.HTTPError as exc:
199
	else:
200
		# raise an httplib error since this exception type is handled
200
		raise httplib.error(_('Uknown protocol %s.') % parts.scheme)
201
		raise httplib.error(_('Could not download file %s: %s') % (url, exc))
201
202
202
	connection.request('HEAD', parts.path)
203
	info = response.info()
203
	response = connection.getresponse()
204
	size = int(info.getheader('content-length', '0'))
204
	if response.status >= 400:
205
		raise httplib.error(_('Could not download file (%s - %s): %s') % (response.status, httplib.responses.get(response.status, _('Unknown error')), url))
206
	headers = dict(response.getheaders())
207
	size = int(headers.get('content-length', '0'))
208
	return size
205
	return size
209
206
210
207
 Lines 216-221    Link Here 
216
	return proxies
213
	return proxies
217
214
218
215
216
# inspired from from u.m.c.modules.appcenter.util
217
def _install_opener():
218
	proxies = _get_proxies()
219
	if proxies:
220
		proxy = urllib2.ProxyHandler(proxies)
221
		opener = urllib2.build_opener(proxy)
222
		urllib2.install_opener(opener)
223
_install_opener()
224
225
219
def _download_url(url, filepath, progress=_dummy_progress):
226
def _download_url(url, filepath, progress=_dummy_progress):
220
	'''Download specified URL to the given location on the hard disk.
227
	'''Download specified URL to the given location on the hard disk.
221
	Optionally with a callback function that receives the parameters (bytes_downloaded, bytes_total).'''
228
	Optionally with a callback function that receives the parameters (bytes_downloaded, bytes_total).'''

Return to bug 35115