From 35048ce1abd202f2913a8e286eac81f28870859a Mon Sep 17 00:00:00 2001 From: Pieter Heyvaert Date: Wed, 27 Jun 2018 11:04:23 +0200 Subject: [PATCH] deal with error when no episodes are returned by server (status code 500) --- lib/downloader.js | 48 +++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/lib/downloader.js b/lib/downloader.js index 3388f7d..8b5104e 100644 --- a/lib/downloader.js +++ b/lib/downloader.js @@ -183,29 +183,37 @@ function recursiveEpisodes(url, anime) { let rawData = ''; episodes.on('data', (chunk) => { rawData += chunk; }); episodes.on('end', () => { + let parsedData; + try { - const parsedData = JSON.parse(rawData); - - parsedData.data.forEach(e => { - e.anime_id = anime.id; - e.anime_slug = anime.attributes.slug; - - delete e.relationships; - delete e.links; - }); - - //console.log(url + ' before ' + episodesArray.length); - episodesArray = episodesArray.concat(parsedData.data); - //console.log(url + ' after ' + episodesArray.length); - - if (parsedData.links.next) { - recursiveEpisodes(parsedData.links.next, anime).then(a => { - deferred.resolve(episodesArray.concat(a)); - }); + parsedData = JSON.parse(rawData); + + if (parsedData.data) { + parsedData.data.forEach(e => { + e.anime_id = anime.id; + e.anime_slug = anime.attributes.slug; + + delete e.relationships; + delete e.links; + }); + + //console.log(url + ' before ' + episodesArray.length); + episodesArray = episodesArray.concat(parsedData.data); + //console.log(url + ' after ' + episodesArray.length); + + if (parsedData.links.next) { + recursiveEpisodes(parsedData.links.next, anime).then(a => { + deferred.resolve(episodesArray.concat(a)); + }); + } else { + deferred.resolve(episodesArray); + } } else { - deferred.resolve(episodesArray); - } + console.error(`No episodes are available for ${anime.attributes.slug}`); + deferred.resolve(episodesArray); + } } catch (e) { + console.log(anime.attributes.slug); console.error(e.message); deferred.reject(e); }