diff --git a/routes/search.js b/routes/search.js index bb5ff86..57564fb 100644 --- a/routes/search.js +++ b/routes/search.js @@ -14,43 +14,47 @@ const queue = kue.createQueue({ export default function* () { const url = parse(this.request.body.url); - debug(`URL ${url}`); + debug(`URL ${url.href}`); this.assert(url.host, 400, { error: { message: 'You need to submit a url.' } }); - const music = yield lookup(this.request.body.url); + try { + const music = yield lookup(this.request.body.url); - this.assert(music, 400, { error: { message: 'No supported music found at that link :(' } }); + this.assert(music, 400, { error: { message: 'No supported music found at that link :(' } }); - let share = yield find(music); + let share = yield find(music); - if (!share) { - share = yield create(music); + if (!share) { + share = yield create(music); - for (const service of services) { - if (service.id === share.service) { - continue; // eslint-disable-line no-continue - } - const job = queue.create('search', { share: share, service: service }).save((err) => { - if (!err) console.log(job.id); + services.forEach((service) => { + if (service.id !== share.service) { + const job = queue.create('search', { share, service }).save((err) => { + debug(err || job.id); + }); + } }); } + + share = share.toJSON(); + + share.id = share.externalId; + + const unmatched = services.filter(service => + !share.matches.find(match => match.service === service.id)); + + share.matches = share.matches.concat(unmatched.map((service) => { + return { + service: service.id, + matching: true, + }; + })); + + share.matches = share.matches.sort(a => !!a.externalId); + + this.body = share; + } catch (e) { + this.throw(400, { error: { message: 'Unexpected error looking up music. Please try again later.' } }); + throw e; } - - share = share.toJSON(); - - share.id = share.externalId; - - const unmatched = services.filter(service => - !share.matches.find(match => match.service === service.id)); - - share.matches = share.matches.concat(unmatched.map((service) => { - return { - service: service.id, - matching: true, - }; - })); - - share.matches = share.matches.sort(a => !!a.externalId); - - this.body = share; }