Commit d2664789 by Michael Mifsud

Merge pull request #909 from saper/fix/httperr

Improve binary file download error handling
parents 1bf73b59 988d4e25
...@@ -21,32 +21,39 @@ require('../lib/extensions'); ...@@ -21,32 +21,39 @@ require('../lib/extensions');
*/ */
function download(url, dest, cb) { function download(url, dest, cb) {
var returnError = function(err) { var reportError = function(err) {
cb(typeof err.message === 'string' ? err.message : err); cb(['Cannot download "', url, '": ',
typeof err.message === 'string' ? err.message : err].join(''));
};
var successful = function(response) {
return response.statusCode >= 200 && response.statusCode < 300;
}; };
if (url) { applyProxy({ rejectUnauthorized: false }, function(options) {
applyProxy({ rejectUnauthorized: false }, function(options) { options.headers = {
options.headers = { 'User-Agent': [
'User-Agent': [ 'node/', process.version, ' ',
'node/', process.version, ' ', 'node-sass-installer/', package.version
'node-sass-installer/', package.version ].join('')
].join('') };
}; try {
request.get(url, options).on('response', function(response) { request(url, options, function(err, response) {
if (response.statusCode < 200 || response.statusCode >= 300) { if (err) {
returnError(['Can not download file from:', url].join()); reportError(err);
return; } else if (!successful(response)) {
reportError(['HTTP error', response.statusCode, response.statusMessage].join(' '));
} else {
cb();
} }
}).on('response', function(response) {
response.pipe(fs.createWriteStream(dest)); if (successful(response)) {
response.pipe(fs.createWriteStream(dest));
cb(); }
}).on('error', returnError); });
}); } catch (err) {
} else { cb(err);
returnError('Download URL not defined, set SASS_BINARY_SITE in the environment to enable download.'); }
} });
} }
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment