Move parseTweetId into page-tweets

This commit is contained in:
Jocelyn Badgley (Twipped) 2020-04-07 10:34:21 -07:00
parent de4dfd765d
commit 0b96c071fc
2 changed files with 30 additions and 14 deletions

View File

@ -107,3 +107,32 @@ function getTwitterClient (config) {
.get('statuses/lookup', { id: tweetids.join(','), tweet_mode: 'extended' }) .get('statuses/lookup', { id: tweetids.join(','), tweet_mode: 'extended' })
.catch((e) => { log.error(e); return []; }); .catch((e) => { log.error(e); return []; });
} }
const tweeturl = /https?:\/\/twitter\.com\/(?:#!\/)?(?:\w+)\/status(?:es)?\/(\d+)/i;
const tweetidcheck = /^\d+$/;
function parseTweetId (tweetid) {
// we can't trust an id that isn't a string
if (typeof tweetid !== 'string') return false;
const match = tweetid.match(tweeturl);
if (match) return match[1];
if (tweetid.match(tweetidcheck)) return tweetid;
return false;
}
exports.parseTweetId = parseTweetId;
exports.attachTweets = function (tweetids, tweets) {
function attachTweet (dict, tweetid) {
const tweet = tweets[tweetid];
if (!tweet) return;
dict[tweetid] = tweet;
if (tweet.quoted_status_id_str) attachTweet(dict, tweet.quoted_status_id_str);
}
return tweetids.reduce((dict, tweetid) => {
attachTweet(dict, tweetid);
return dict;
}, {});
};

View File

@ -8,6 +8,7 @@ const actions = require('./actions');
const { URL } = require('url'); const { URL } = require('url');
const { resolve, readFile, isCleanUrl, TYPE, ENGINE } = require('./resolve'); const { resolve, readFile, isCleanUrl, TYPE, ENGINE } = require('./resolve');
const { isObject, isString } = require('./lib/util'); const { isObject, isString } = require('./lib/util');
const { parseTweetId } = require('./page-tweets');
const pkg = require(resolve('package.json')); const pkg = require(resolve('package.json'));
const frontmatter = require('front-matter'); const frontmatter = require('front-matter');
@ -131,17 +132,3 @@ module.exports = exports = class Page extends File {
} }
}; };
/* Utility Functions **************************************************/
const tweeturl = /https?:\/\/twitter\.com\/(?:#!\/)?(?:\w+)\/status(?:es)?\/(\d+)/i;
const tweetidcheck = /^\d+$/;
function parseTweetId (tweetid) {
// we can't trust an id that isn't a string
if (typeof tweetid !== 'string') return false;
const match = tweetid.match(tweeturl);
if (match) return match[1];
if (tweetid.match(tweetidcheck)) return tweetid;
return false;
}