50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
var needle = require('needle');
|
|
const fs = require('fs-extra')
|
|
|
|
function stream_multiple(req, res, _urls, stream_dir, index = 0) {
|
|
if (index == 0) {
|
|
// initial state
|
|
}
|
|
|
|
let writeStream;
|
|
const uri = _urls[index];
|
|
|
|
if (index == undefined) {
|
|
index = 0;
|
|
stream_multiple(req, res, _urls, stream_dir, index);
|
|
} else {
|
|
|
|
writeStream = fs.createWriteStream(`${stream_dir}` + `${index}.jpeg`);
|
|
|
|
writeStream.on("ready", () => console.log({ msg: `STREAM::WRITE::READY::${index}` }));
|
|
writeStream.on("open", () => console.log({ msg: `STREAM::WRITE::OPEN::${index}` }));
|
|
writeStream.on("finish", () => console.log({ msg: `STREAM::WRITE::DONE::${index}` }));
|
|
|
|
writeStream.on('close', () => {
|
|
if (index >= _urls.length - 1) {
|
|
res.redirect('/');
|
|
} else {
|
|
stream_multiple(req, res, _urls, stream_dir, index + 1);
|
|
}
|
|
})
|
|
|
|
needle
|
|
.get(uri, function (error, response) {
|
|
if (response.bytes >= 1) {
|
|
// you want to kill our servers
|
|
}
|
|
|
|
if (!error && response.statusCode == 200) {
|
|
// good
|
|
} else {
|
|
// then we can retry later
|
|
}
|
|
})
|
|
.pipe(writeStream)
|
|
.on('done', function () {
|
|
// needle
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = { stream_multiple } |