From 7468cc4ea6aa2ff3467bdedf68c3d73bf29f4ba8 Mon Sep 17 00:00:00 2001 From: Jonathan Cremin Date: Sun, 7 Dec 2014 18:33:55 +0000 Subject: [PATCH] Handle bad rdio urls --- lib/services/itunes.js | 1 - lib/services/rdio.js | 51 +++++++++++++++++++++++++----------------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/lib/services/itunes.js b/lib/services/itunes.js index 178bfa3..0a47290 100644 --- a/lib/services/itunes.js +++ b/lib/services/itunes.js @@ -18,7 +18,6 @@ module.exports.lookupId = function(id, type, cc) { if (id.match(/^[a-z]{2}/)) { cc = id.substr(0,2); id = id.substr(2); - console.log(id) } var path = "/lookup?id=" + id; diff --git a/lib/services/rdio.js b/lib/services/rdio.js index 024f516..494bb91 100644 --- a/lib/services/rdio.js +++ b/lib/services/rdio.js @@ -74,32 +74,41 @@ module.exports.parseUrl = function(url) { url: parsed.path, }; } else { - return; + var error = new Error("Not Found"); + error.status = 404; + deferred.reject(error); } rdio.api("", "", data, function(err, results) { - var result = JSON.parse(results).result; - var parsed = parse(result.shortUrl) - var id = parsed.path.replace("/x/", "").replace("/", ""); - var type = result.album ? "track" : "album"; - var item = { - service: "rdio", - type: type, - id: id, - name: result.name, - streamUrl: result.shortUrl, - purchaseUrl: null, - artwork: result.icon.replace("square-200", "square-250").replace("http:", "https:"), - artist: { - name: result.artist - } - }; - if (type == "track") { - item.album = { - name: result.album + var results = JSON.parse(results); + var result = results.result; + if (!result || results.status != "ok") { + var error = new Error("Not Found"); + error.status = 404; + deferred.reject(error); + } else { + var parsed = parse(result.shortUrl) + var id = parsed.path.replace("/x/", "").replace("/", ""); + var type = result.album ? "track" : "album"; + var item = { + service: "rdio", + type: type, + id: id, + name: result.name, + streamUrl: result.shortUrl, + purchaseUrl: null, + artwork: result.icon.replace("square-200", "square-250").replace("http:", "https:"), + artist: { + name: result.artist + } }; + if (type == "track") { + item.album = { + name: result.album + }; + } + deferred.resolve(item); } - deferred.resolve(item); }); return deferred.promise; };