diff --git a/package.json b/package.json index 633cc61..1da9124 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "moment-timezone": "^0.5.13", "puppeteer": "^13.6.0", "raven": "^2.1.1", - "twitter": "^1.7.1", + "twitter-api-v2": "^1.15.0", "v-click-outside": "^3.0.1", "vue": "^2.6.11", "vue-clipboard2": "^0.3.1", diff --git a/src/app/twitter/client.js b/src/app/twitter/client.js index 7a318e4..f00ed95 100644 --- a/src/app/twitter/client.js +++ b/src/app/twitter/client.js @@ -1,39 +1,33 @@ -const Twitter = require('twitter'); +const { TwitterApi } = require("twitter-api-v2"); // Twitter API parameters -const consumer_key = process.env.TWITTER_CONSUMER_KEY; -const consumer_secret = process.env.TWITTER_CONSUMER_SECRET; -const access_token_key = process.env.TWITTER_ACCESS_TOKEN_KEY; -const access_token_secret = process.env.TWITTER_ACCESS_TOKEN_SECRET; +const appKey = process.env.TWITTER_CONSUMER_KEY; +const appSecret = process.env.TWITTER_CONSUMER_SECRET; +const accessToken = process.env.TWITTER_ACCESS_TOKEN_KEY; +const accessSecret = process.env.TWITTER_ACCESS_TOKEN_SECRET; // Twitter API client -const client = new Twitter({ consumer_key, consumer_secret, access_token_key, access_token_secret }); -module.exports.client = client; +function getClient() { + return new TwitterApi({ + appKey, + appSecret, + accessToken, + accessSecret, + }); +} function canTweet() { - return consumer_key && consumer_secret && access_token_key && access_token_secret; + return appKey && appSecret && accessToken && accessSecret; } module.exports.canTweet = canTweet; -function postMediaTweet(text, image) { - return new Promise((resolve, reject) => { - // Upload the image - client.post('media/upload', { media: image }, (error, media, response) => { - if (error) - return reject(error); +async function postMediaTweet(text, image) { + let client = getClient(); - let status = { - status: text, - media_ids: media.media_id_string, - }; + // Upload images + let mediaId = await client.v1.uploadMedia(image, { mimeType: 'image/png' }); - client.post('statuses/update', status, (error, tweet, response) => { - if (error) - return reject(error); - - resolve(tweet); - }); - }); - }); + // Send status + await client.v2.tweet(text, { media: { media_ids: [mediaId] } }); } module.exports.postMediaTweet = postMediaTweet; diff --git a/yarn.lock b/yarn.lock index 6240f72..d34c465 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3366,11 +3366,6 @@ deep-equal@^1.0.1: object-keys "^1.1.1" regexp.prototype.flags "^1.2.0" -deep-extend@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.5.1.tgz#b894a9dd90d3023fbf1c55a394fb858eb2066f1f" - integrity sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w== - deep-is@^0.1.3, deep-is@~0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -7951,7 +7946,7 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request@^2.72.0, request@^2.88.2: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -9133,13 +9128,10 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -twitter@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/twitter/-/twitter-1.7.1.tgz#0762378f1dc1c050e48f666aca904e24b1a962f4" - integrity sha1-B2I3jx3BwFDkj2ZqypBOJLGpYvQ= - dependencies: - deep-extend "^0.5.0" - request "^2.72.0" +twitter-api-v2@^1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/twitter-api-v2/-/twitter-api-v2-1.15.0.tgz#ab8ff0f50158ac8d7897777b70ec39087d950f40" + integrity sha512-Cqg3pIGhSwPyFBndpBrucdeNXecNFnYcXy3ixQ4brJHd/3k1CAtBVcX0e3s6jRYl/QIx5BmyGXS/SHEGtYZ3gw== type-check@^0.4.0, type-check@~0.4.0: version "0.4.0"