Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 1x 1x 1x 24x | import { config } from '../config'; import { BindTwitterRequestDto, BindTwitterResultDto } from 'src/extensions/dao/models'; import { EUploadMimeType, TwitterApi, UserV2Result } from 'twitter-api-v2'; export default class TwitterClient { client: TwitterApi; constructor() { this.client = process.env.hasOwnProperty('TWITTER_ACCESS_TOKEN_KEY') ? new TwitterApi({ accessToken: process.env.TWITTER_ACCESS_TOKEN_KEY, accessSecret: process.env.TWITTER_ACCESS_TOKEN_SECRET, appKey: process.env.TWITTER_API_KEY, appSecret: process.env.TWITTER_API_KEY_SECRET, }) : undefined; } async startLogin() { const client = new TwitterApi({ clientId: process.env.TWITTER_CLIENT_ID, clientSecret: process.env.TWITTER_CLIENT_SECRET }) const result = client.generateOAuth2AuthLink(config.twitterAPIRedirectURL, { scope: ['tweet.read', 'users.read'] }) return result } async finalizeLogin(infos: any, request: BindTwitterRequestDto):Promise<BindTwitterResultDto> { const client = new TwitterApi({ clientId: process.env.TWITTER_CLIENT_ID, clientSecret: process.env.TWITTER_CLIENT_SECRET }) const { client: userClient, accessToken, refreshToken } = await client.loginWithOAuth2({ code: request.code, codeVerifier: infos.codeVerifier, redirectUri: `${config.twitterAPIRedirectURL}` }) console.log('client: ', userClient) const user = await userClient.currentUserV2() console.log('user', user) const currentUser = await userClient.v2.me({ "user.fields": "created_at" }) console.log('currentUser', currentUser) return { createdAt: currentUser.data.created_at, id: currentUser.data.id, name: currentUser.data.name, username: currentUser.data.username, accessToken, refreshToken } /* currentUser { data: { created_at: '2021-08-11T19:58:06.000Z', id: '1425547057486520329', name: 'tat2bu.eth', username: 'tat2bu' } }*/ } uploadMedia(processedImage: Buffer, options: { mimeType: EUploadMimeType; }): string | PromiseLike<string> { this.client.appLogin return this.client.v1.uploadMedia(processedImage, options); } tweet(tweetText: string, options:any): any { return this.client.v2.tweet(tweetText, options) } } |