diff --git a/lib/post.js b/lib/post.js index 161b913..f491f0e 100644 --- a/lib/post.js +++ b/lib/post.js @@ -23,14 +23,22 @@ function fetchStories(modifier, value, latest, cb) { } request(url, function (err, res) { - if (!err && res.statusCode == 200) { + if (err) { + cb(err); + } else if (res.statusCode == 200) { // Strip out while(1) prepended to res - var data = JSON.parse(res.body.replace('])}while(1);', '')); - cb(data); - // statusCode is 404 if the user doesn't exist + var data; + try { + data = JSON.parse(res.body.replace('])}while(1);', '')); + } catch (parseError) { + cb(parseError); + return; + } + cb(null, data); } else if (res.statusCode == 404) { - console.log(value + ' is not a valid Medium author.'); - process.exit(1); + cb(new Error(value + ' is not a valid Medium author.')); + } else { + cb(new Error('Medium returned HTTP ' + res.statusCode)); } }); } @@ -125,9 +133,9 @@ function processContent(data, modifier, count) { function getStories(modifier, options) { var deferred = Q.defer(); var value = options.value, latest = options.latest; - getContent(modifier, value, latest, function (res) { - if (!res) { - return deferred.reject(); + getContent(modifier, value, latest, function (err, res) { + if (err) { + return deferred.reject(err); } var posts = processContent(res, modifier, options.count); deferred.resolve(posts);