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 } | 
