From 832287f3f81edd3d73ad0445eea02b6d4ea32cbb Mon Sep 17 00:00:00 2001 From: Michal Tuleja Date: Thu, 9 Aug 2018 15:48:53 +0200 Subject: [PATCH] Add safety check during Twitter response URL parse --- services/newsfeed/TwitterService.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/services/newsfeed/TwitterService.js b/services/newsfeed/TwitterService.js index 7dbec12d8..b33d5339f 100644 --- a/services/newsfeed/TwitterService.js +++ b/services/newsfeed/TwitterService.js @@ -24,13 +24,22 @@ const client = new Twitter({ access_token_secret: process.env.TWITTER_ACCESS_TOKEN_SECRET, }); +const safeRef = (obj, path) => { + try { + // eslint-disable-next-line + return path.split('.').reduce((xs, x) => (xs && xs[x]) ? xs[x] : null, obj); + } catch (e) { + return null; + } +}; + const tweetUrl = (o) => { if (o.retweeted_status) { - return o.retweeted_status.entities.urls[0].url; + return safeRef(o, 'retweeted_status.entities.urls.0.url'); } else if (o.extended_entities) { - return o.extended_entities.media[0].url; + return safeRef(o, 'extended_entities.media.0.url'); } else if (o.entities) { - return o.entities.urls[0].url; + return safeRef(o, 'entities.urls.0.url'); } return null; };