scsync
Version:
SoundCloud incoming tracks downloader.
64 lines (62 loc) • 2.16 kB
JavaScript
var request = require('./request');
var gid = 0;
var getSuffix = require('./suffix');
module.exports = function(debug, file, cb1) {
var id = gid;
gid += 1;
if(debug) {
console.log('resolveStream start: ' + id + ' ' + file.filename);
}
var cb = function(err, resolvedFile) {
if(debug) {
if(err) {
console.log('resolveStream fail: ' + id + ' ' + file.filename);
} else {
console.log('resolveStream finish: ' + id + ' ' + resolvedFile.filename);
}
}
cb1(err, resolvedFile);
};
try {
request(file.url, 'GET', {}, function(res) {
if(debug) {
console.log('resolveStream progress: ' + id + ' ' + res.headers.location);
}
if(typeof res.headers.location === 'undefined') {
cb(new Error('Location header not found'));
return;
}
try {
res.destroy();
request(res.headers.location, 'GET', {}, function(res) {
try {
res.destroy();
cb(null, {
date : file.date,
url : file.url,
filename : file.filename + getSuffix(res.headers)
});
} catch(err) {
cb(err, null);
}
}).on('close', function() {
if(debug) {
console.log('resolveStream close: ' + id + ' ' + JSON.stringify(arguments));
}
}).on('end', function() {
if(debug) {
console.log('resolveStream end: ' + id + ' ' + JSON.stringify(arguments));
}
}).on('error', function(err) {
cb(err, null);
});
} catch(err) {
cb(err, null);
}
}).on('error', function(err) {
cb(err, null);
});
} catch(err) {
cb(err, null);
}
};