From ff698cff14e3da0c6a8195983d21185c00f28f70 Mon Sep 17 00:00:00 2001 From: Jonathan Cremin Date: Fri, 5 Dec 2014 18:08:40 +0000 Subject: [PATCH] More sanity checking on passed IDs --- lib/services/beats.js | 5 +++++ lib/services/deezer.js | 6 ++++++ lib/services/itunes.js | 7 +++++-- lib/services/rdio.js | 6 ++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/services/beats.js b/lib/services/beats.js index 7fffaaa..b5cd57c 100644 --- a/lib/services/beats.js +++ b/lib/services/beats.js @@ -24,6 +24,7 @@ module.exports.match = function(url, type) { module.exports.lookupId = function(id) { var deferred = Q.defer(); + if (id.substr(0,2) == "al") { request.get(apiRoot + "/albums/" + id + "/images/default?size=medium&client_id=" + credentials.key).redirects(0).end(function(res) { var artwork = res.headers.location; @@ -65,6 +66,10 @@ module.exports.lookupId = function(id) { }); }); }); + } else { + var error = new Error("Not Found"); + error.status = 404; + deferred.reject(error); } return deferred.promise; }; diff --git a/lib/services/deezer.js b/lib/services/deezer.js index 6ddb795..d329289 100644 --- a/lib/services/deezer.js +++ b/lib/services/deezer.js @@ -18,6 +18,12 @@ module.exports.lookupId = function(id, type) { request.get(apiRoot + path, function(res) { var result = res.body; + if (res.body.error) { + var error = new Error("Not Found"); + error.status = 404; + deferred.reject(error); + return; + } var cover = result.cover || result.album.cover; request.get(cover).redirects(0).end(function(res) { var artwork = res.headers.location.replace("120x120", "200x200"); diff --git a/lib/services/itunes.js b/lib/services/itunes.js index c0e84e2..a027df9 100644 --- a/lib/services/itunes.js +++ b/lib/services/itunes.js @@ -19,8 +19,11 @@ module.exports.lookupId = function(id, type) { request.get(apiRoot + path, function(res) { var data = JSON.parse(res.text); - if (!data.results[0].collectionId) { - deferred.resolve({service: "itunes"}); + if (!data.results || !data.results[0].collectionId) { + var error = new Error("Not Found"); + error.status = 404; + deferred.reject(error); + return; } else { var result = data.results[0]; diff --git a/lib/services/rdio.js b/lib/services/rdio.js index 7180078..c024eb1 100644 --- a/lib/services/rdio.js +++ b/lib/services/rdio.js @@ -25,6 +25,12 @@ module.exports.lookupId = function(id) { method: 'getObjectFromShortCode', short_code: id, }, function(err, results) { + if (err || !JSON.parse(results).result) { + var error = new Error("Not Found"); + error.status = 404; + deferred.reject(error); + return; + } var result = JSON.parse(results).result; var parsed = parse(result.shortUrl) var id = parsed.path.replace("/x/", "").replace("/", "");