From d8fd20a89a0b81a27fbccf5bf77416087f793920 Mon Sep 17 00:00:00 2001 From: dajiaohuang Date: Fri, 16 Oct 2026 19:52:22 +0800 Subject: [PATCH 1/2] Handle Medium request failures --- lib/post.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/lib/post.js b/lib/post.js index 161b913..de2e81a 100644 --- a/lib/post.js +++ b/lib/post.js @@ -23,14 +23,16 @@ 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 + 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 +127,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); From 9bdee0a8a787dc0efaf893c77da4fa46298189c3 Mon Sep 17 00:00:00 2001 From: dajiaohuang Date: Fri, 16 Oct 2026 19:53:11 +0800 Subject: [PATCH 2/2] Reject malformed story responses --- lib/post.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/post.js b/lib/post.js index de2e81a..f491f0e 100644 --- a/lib/post.js +++ b/lib/post.js @@ -27,7 +27,13 @@ function fetchStories(modifier, value, latest, cb) { cb(err); } else if (res.statusCode == 200) { // Strip out while(1) prepended to res - var data = JSON.parse(res.body.replace('])}while(1);', '')); + var data; + try { + data = JSON.parse(res.body.replace('])}while(1);', '')); + } catch (parseError) { + cb(parseError); + return; + } cb(null, data); } else if (res.statusCode == 404) { cb(new Error(value + ' is not a valid Medium author.'));