Merge pull request #13420 from timvandermeij/test-downloadutils
Drop obsolete logic from the `downloadFile` function in `test/downloadutils.js`
This commit is contained in:
commit
9127e11022
@ -38,11 +38,9 @@ function rewriteWebArchiveUrl(url) {
|
|||||||
function downloadFile(file, url, callback, redirects) {
|
function downloadFile(file, url, callback, redirects) {
|
||||||
url = rewriteWebArchiveUrl(url);
|
url = rewriteWebArchiveUrl(url);
|
||||||
|
|
||||||
var completed = false;
|
|
||||||
var protocol = /^https:\/\//.test(url) ? https : http;
|
var protocol = /^https:\/\//.test(url) ? https : http;
|
||||||
protocol
|
protocol
|
||||||
.get(url, function (response) {
|
.get(url, function (response) {
|
||||||
var redirectTo;
|
|
||||||
if (
|
if (
|
||||||
response.statusCode === 301 ||
|
response.statusCode === 301 ||
|
||||||
response.statusCode === 302 ||
|
response.statusCode === 302 ||
|
||||||
@ -52,56 +50,28 @@ function downloadFile(file, url, callback, redirects) {
|
|||||||
if (redirects > 10) {
|
if (redirects > 10) {
|
||||||
callback("Too many redirects");
|
callback("Too many redirects");
|
||||||
}
|
}
|
||||||
redirectTo = response.headers.location;
|
var redirectTo = response.headers.location;
|
||||||
redirectTo = require("url").resolve(url, redirectTo);
|
redirectTo = require("url").resolve(url, redirectTo);
|
||||||
downloadFile(file, redirectTo, callback, (redirects || 0) + 1);
|
downloadFile(file, redirectTo, callback, (redirects || 0) + 1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (response.statusCode === 404 && !url.includes("web.archive.org")) {
|
|
||||||
// trying waybackmachine
|
|
||||||
redirectTo = "http://web.archive.org/web/" + url;
|
|
||||||
downloadFile(file, redirectTo, callback, (redirects || 0) + 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.statusCode !== 200) {
|
if (response.statusCode !== 200) {
|
||||||
if (!completed) {
|
callback("HTTP " + response.statusCode);
|
||||||
completed = true;
|
|
||||||
callback("HTTP " + response.statusCode);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var stream = fs.createWriteStream(file);
|
var stream = fs.createWriteStream(file);
|
||||||
stream.on("error", function (err) {
|
stream.on("error", function (err) {
|
||||||
if (!completed) {
|
callback(err);
|
||||||
completed = true;
|
|
||||||
callback(err);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
response.pipe(stream);
|
response.pipe(stream);
|
||||||
stream.on("finish", function () {
|
stream.on("finish", function () {
|
||||||
stream.end();
|
stream.end();
|
||||||
if (!completed) {
|
callback();
|
||||||
completed = true;
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.on("error", function (err) {
|
.on("error", function (err) {
|
||||||
if (!completed) {
|
callback(err);
|
||||||
if (
|
|
||||||
typeof err === "object" &&
|
|
||||||
err.errno === "ENOTFOUND" &&
|
|
||||||
!url.includes("web.archive.org")
|
|
||||||
) {
|
|
||||||
// trying waybackmachine
|
|
||||||
var redirectTo = "http://web.archive.org/web/" + url;
|
|
||||||
downloadFile(file, redirectTo, callback, (redirects || 0) + 1);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
completed = true;
|
|
||||||
callback(err);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user