1.3.0 • Published 8 years ago
downloadr v1.3.0
Downloadr
Binary file download library built on top of got.
Installation
npm install downloadrFeatures
- Progression tracking
- File integrity check
- Abort
- Queue
Usage
Initialization
const Downloadr = require('downloadr');
const downloadr = new Downloadr();Queue a download
downloadr.add({
url: 'http://localhost/file.zip',
hash: '4fb8652b2be29734df530fc0cfcaae922564b840', // optional SHA-1 - omit to skip file integrity check
file: 'file.zip'
});You can also pass an array of downloads directly to the constructor:
const downloadr = new Downloadr([
{
url: 'http://localhost/file.zip',
hash: '4fb8652b2be29734df530fc0cfcaae922564b840',
file: 'file.zip'
}
]);Event listeners
// Progress
downloadr.on('progress', (job, progress) => {
/*
job => {
url: 'http://localhost/file.zip',
hash: '4fb8652b2be29734df530fc0cfcaae922564b840',
file: 'file.zip'
}
progress => {
current: 0.1254,
total: 0.896,
speed: 949624
}
*/
});
// Job end
downloadr.on('jobEnd', (job, err) => {
if (err) {
return console.log(`An error occurred: ${err.message}`);
}
console.log(`Successfully downloaded ${job.url}`);
});
// End
downloadr.on('end', err => {
if (err) {
return console.log(`An error occurred: ${err.message}`);
}
console.log('Download queue complete');
});Post processing
Use postProcess argument to pass a function that will be executed after a successful download, but before jobEnd event is triggered:
downloadr.add({
url: 'http://localhost/file.zip',
file: 'file.zip',
postProcess: job => {
console.dir(job);
}
});If postProcess returns a promise, jobEnd will only be triggered once it's fulfilled (and pass an error if it's rejected).
downloadr.add({
url: 'http://localhost/file.zip',
file: 'file.zip',
postProcess: job => new Promise((resolve, reject) => {
console.log(`File ${job.file} downloaded, waiting 2 seconds...`);
setTimeout(resolve, 2000);
})
});Start/abort download queue
// Start queue
downloadr.start();
// Abort queue
downloadr.abort();Tests
To run the test suite, first install the dependencies, then run npm test:
npm install
npm testResources
TODO
- Seen an issue with 0b files