UNPKG

scsync

Version:

SoundCloud incoming tracks downloader.

64 lines (62 loc) 2.16 kB
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); } };