提交 55026b27 编写于 作者: C Carl Meyer

Merged pull request #275 from bradleyayers/develop.

Fixed issue #273
import re
import cgi
import getpass
import sys
import os
import mimetypes
import os
import re
import shutil
import sys
import tempfile
from pip.backwardcompat import (md5, copytree, xmlrpclib, urllib, urllib2,
urlparse, string_types, HTTPError)
......@@ -330,10 +331,7 @@ def _check_md5(download_hash, link):
def _get_md5_from_file(target_file, link):
download_hash = md5()
fp = open(target_file, 'rb')
while 1:
chunk = fp.read(4096)
if not chunk:
break
for chunk in iter(lambda: fp.read(4096), ''):
download_hash.update(chunk)
fp.close()
return download_hash
......@@ -362,10 +360,7 @@ def _download_url(resp, link, temp_location):
logger.notify('Downloading %s' % show_url)
logger.debug('Downloading from URL %s' % link)
while 1:
chunk = resp.read(4096)
if not chunk:
break
for chunk in iter(lambda: resp.read(4096), ''):
downloaded += len(chunk)
if show_progress:
if not total_length:
......@@ -416,7 +411,7 @@ def unpack_http_url(link, location, download_cache, only_download):
create_download_cache_folder(download_cache)
if (target_file
and os.path.exists(target_file)
and os.path.exists(target_file+'.content-type')):
and os.path.exists(target_file + '.content-type')):
fp = open(target_file+'.content-type')
content_type = fp.read().strip()
fp.close()
......@@ -427,7 +422,14 @@ def unpack_http_url(link, location, download_cache, only_download):
else:
resp = _get_response_from_url(target_url, link)
content_type = resp.info()['content-type']
filename = link.filename
filename = link.filename # fallback
# Have a look at the Content-Disposition header for a better guess
content_disposition = resp.info().get('content-disposition')
if content_disposition:
type, params = cgi.parse_header(content_disposition)
# We use ``or`` here because we don't want to use an "empty" value
# from the filename param.
filename = params.get('filename') or filename
ext = splitext(filename)[1]
if not ext:
ext = mimetypes.guess_extension(content_type)
......@@ -466,6 +468,7 @@ def _get_response_from_url(target_url, link):
raise
return resp
class Urllib2HeadRequest(urllib2.Request):
def get_method(self):
return "HEAD"
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册