Update the rest of the libraries for bluebird

This commit is contained in:
Jonathan Cremin 2014-12-13 00:00:49 +00:00
parent 90c1385fb3
commit 17de5e9b92
8 changed files with 591 additions and 144 deletions

View file

@ -1,6 +1,6 @@
"use strict";
var parse = require('url').parse;
var Q = require('q');
var Promise = require('bluebird');
module.exports.id = "rdio";
@ -14,21 +14,18 @@ var rdio = require('rdio')({
rdio_api_shared: process.env.RDIO_API_SHARED,
});
var rdio = Promise.promisifyAll(rdio);
module.exports.match = require('./url').match;
module.exports.lookupId = function(id) {
var deferred = Q.defer();
rdio.api("", "", {
method: 'getObjectFromShortCode',
short_code: id,
}, function(err, results) {
if (err || !JSON.parse(results).result) {
return rdio.apiAsync("", "", {method: 'getObjectFromShortCode', short_code: id}).then(function(results) {
if (!JSON.parse(results[0]).result) {
var error = new Error("Not Found");
error.status = 404;
deferred.reject(error);
return;
throw error;
}
var result = JSON.parse(results).result;
var result = JSON.parse(results[0]).result;
var parsed = parse(result.shortUrl)
var id = parsed.path.replace("/x/", "").replace("/", "");
var type = result.album ? "track" : "album";
@ -49,13 +46,11 @@ module.exports.lookupId = function(id) {
name: result.album
};
}
deferred.resolve(item);
return item;
});
return deferred.promise;
};
module.exports.parseUrl = function(url) {
var deferred = Q.defer();
var parsed = parse(url);
var data;
@ -73,16 +68,16 @@ module.exports.parseUrl = function(url) {
} else {
var error = new Error("Not Found");
error.status = 404;
return deferred.reject(error);
throw error;
}
rdio.api("", "", data, function(err, results) {
var results = JSON.parse(results);
return rdio.apiAsync("", "", data).then(function(results) {
var results = JSON.parse(results[0]);
var result = results.result;
if (!result || results.status != "ok") {
var error = new Error("Not Found");
error.status = 404;
return deferred.reject(error);
throw error;
} else {
var parsed = parse(result.shortUrl)
var id = parsed.path.replace("/x/", "").replace("/", "");
@ -104,14 +99,12 @@ module.exports.parseUrl = function(url) {
name: result.album
};
}
deferred.resolve(item);
return item;
}
});
return deferred.promise;
};
module.exports.search = function(data) {
var deferred = Q.defer();
var query, albumClean;
var type = data.type;
@ -123,12 +116,8 @@ module.exports.search = function(data) {
albumClean = data.album.name.match(/([^\(\[]+)/)[0];
}
rdio.api("", "", {
query: query,
method: 'search',
types: type,
}, function(err, results) {
var results = JSON.parse(results).result.results;
return rdio.apiAsync("", "", {query: query, method: 'search', types: type}).then(function(results) {
var results = JSON.parse(results[0]).result.results;
var result = results.filter(function(result) {
if (type == "album" && result.name.match(/([^\(\[]+)/)[0] == albumClean) {
@ -147,9 +136,9 @@ module.exports.search = function(data) {
} else if (type == "track") {
cleanedData.album.name = matches[0].trim();
}
module.exports.search(cleanedData).then(deferred.resolve);
return module.exports.search(cleanedData);
} else {
deferred.resolve({service: "rdio"});
return {service: "rdio"};
}
} else {
var parsed = parse(result.shortUrl)
@ -171,8 +160,7 @@ module.exports.search = function(data) {
name: result.album
};
}
deferred.resolve(item);
return item;
}
});
return deferred.promise;
};