diff --git a/src/api/status.ts b/src/api/status.ts index cc6d648..80d45a9 100644 --- a/src/api/status.ts +++ b/src/api/status.ts @@ -32,6 +32,7 @@ const populateTweetProperties = async ( apiTweet.id = tweet.id_str; apiTweet.text = unescapeText(linkFixer(tweet, tweet.full_text || '')); apiTweet.author = { + id: tweet.user_id_str, name: name, screen_name: screenName, avatar_url: diff --git a/src/types/types.d.ts b/src/types/types.d.ts index f4fc0a2..cb995bf 100644 --- a/src/types/types.d.ts +++ b/src/types/types.d.ts @@ -59,6 +59,7 @@ interface APITranslate { target_lang: string; } interface BaseUser { + id?: string; name?: string; screen_name?: string; avatar_url?: string; @@ -150,7 +151,6 @@ interface APITweet { } interface APIUser extends BaseUser { - id: string; description: string; location: string; url: string; diff --git a/test/index.test.ts b/test/index.test.ts index 8045e61..6778650 100644 --- a/test/index.test.ts +++ b/test/index.test.ts @@ -82,6 +82,7 @@ test('API fetch basic Tweet', async () => { expect(tweet.id).toEqual('20'); expect(tweet.text).toEqual('just setting up my twttr'); expect(tweet.author.screen_name?.toLowerCase()).toEqual('jack'); + expect(tweet.author.id).toEqual('12'); expect(tweet.author.name).toBeTruthy(); expect(tweet.author.avatar_url).toBeTruthy(); expect(tweet.author.banner_url).toBeTruthy(); @@ -117,6 +118,7 @@ test('API fetch video Tweet', async () => { 'Get the sauces ready, #NuggsForCarter has 3 million+ Retweets.' ); expect(tweet.author.screen_name?.toLowerCase()).toEqual('twitter'); + expect(tweet.author.id).toEqual('783214'); expect(tweet.author.name).toBeTruthy(); expect(tweet.author.avatar_url).toBeTruthy(); expect(tweet.author.banner_url).toBeTruthy(); @@ -161,6 +163,7 @@ test('API fetch multi-photo Tweet', async () => { expect(tweet.id).toEqual('1445094085593866246'); expect(tweet.text).toEqual('@netflix'); expect(tweet.author.screen_name?.toLowerCase()).toEqual('twitter'); + expect(tweet.author.id).toEqual('783214'); expect(tweet.author.name).toBeTruthy(); expect(tweet.author.avatar_url).toBeTruthy(); expect(tweet.author.banner_url).toBeTruthy(); @@ -187,82 +190,82 @@ test('API fetch multi-photo Tweet', async () => { ); }); -// test('API fetch multi-video Tweet', async () => { -// const result = await cacheWrapper( -// new Request('https://api.fxtwitter.com/dangeredwolf/status/1557914172763127808', { -// method: 'GET', -// headers: botHeaders -// }) -// ); -// expect(result.status).toEqual(200); -// const response = (await result.json()) as TweetAPIResponse; -// expect(response).toBeTruthy(); -// expect(response.code).toEqual(200); -// expect(response.message).toEqual('OK'); +test.skip('API fetch multi-video Tweet', async () => { + const result = await cacheWrapper( + new Request('https://api.fxtwitter.com/dangeredwolf/status/1557914172763127808', { + method: 'GET', + headers: botHeaders + }) + ); + expect(result.status).toEqual(200); + const response = (await result.json()) as TweetAPIResponse; + expect(response).toBeTruthy(); + expect(response.code).toEqual(200); + expect(response.message).toEqual('OK'); -// const tweet = response.tweet as APITweet; -// expect(tweet).toBeTruthy(); -// expect(tweet.url).toEqual( -// 'https://twitter.com/dangeredwolf/status/1557914172763127808' -// ); -// expect(tweet.id).toEqual('1557914172763127808'); -// expect(tweet.text).toEqual(''); -// expect(tweet.author.screen_name?.toLowerCase()).toEqual('dangeredwolf'); -// expect(tweet.author.name).toBeTruthy(); -// expect(tweet.author.avatar_url).toBeTruthy(); -// expect(tweet.author.banner_url).toBeTruthy(); -// expect(tweet.author.avatar_color).toBeTruthy(); -// expect(tweet.twitter_card).toEqual('player'); -// expect(tweet.created_at).toEqual('Fri Aug 12 02:17:38 +0000 2022'); -// expect(tweet.created_timestamp).toEqual(1660270658); -// expect(tweet.replying_to).toBeNull(); -// expect(tweet.media?.videos).toBeTruthy(); -// const videos = tweet.media?.videos as APIVideo[]; -// expect(videos[0].url).toEqual( -// 'https://video.twimg.com/ext_tw_video/1539029945124528130/pu/vid/1662x1080/ZQP4eoQhnGnKcLEb.mp4?tag=14' -// ); -// expect(videos[0].thumbnail_url).toEqual( -// 'https://pbs.twimg.com/ext_tw_video_thumb/1539029945124528130/pu/img/6Z1MXMliums60j03.jpg' -// ); -// expect(videos[0].width).toEqual(3548); -// expect(videos[0].height).toEqual(2304); -// expect(videos[0].duration).toEqual(37.75); -// expect(videos[0].format).toEqual('video/mp4'); -// expect(videos[0].type).toEqual('video'); -// expect(videos[1].url).toEqual( -// 'https://video.twimg.com/ext_tw_video/1543316856697769984/pu/vid/1920x1080/3fo7b4EnWv2WO8Z1.mp4?tag=14' -// ); -// expect(videos[1].thumbnail_url).toEqual( -// 'https://pbs.twimg.com/ext_tw_video_thumb/1543316856697769984/pu/img/eCl67JRWO8r4r8A4.jpg' -// ); -// expect(videos[1].width).toEqual(1920); -// expect(videos[1].height).toEqual(1080); -// expect(videos[1].duration).toEqual(71.855); -// expect(videos[1].format).toEqual('video/mp4'); -// expect(videos[1].type).toEqual('video'); -// expect(videos[2].url).toEqual( -// 'https://video.twimg.com/ext_tw_video/1543797953105625088/pu/vid/1920x1080/GHSLxzBrwiDLhLYD.mp4?tag=14' -// ); -// expect(videos[2].thumbnail_url).toEqual( -// 'https://pbs.twimg.com/ext_tw_video_thumb/1543797953105625088/pu/img/2eX2QQkd7b2S1YDl.jpg' -// ); -// expect(videos[2].width).toEqual(1920); -// expect(videos[2].height).toEqual(1080); -// expect(videos[2].duration).toEqual(22.018); -// expect(videos[2].format).toEqual('video/mp4'); -// expect(videos[2].type).toEqual('video'); -// expect(videos[3].url).toEqual( -// 'https://video.twimg.com/ext_tw_video/1548602342488129536/pu/vid/720x1280/I_D3svYfjBl7_xGS.mp4?tag=14' -// ); -// expect(videos[3].thumbnail_url).toEqual( -// 'https://pbs.twimg.com/ext_tw_video_thumb/1548602342488129536/pu/img/V_1u5Nv5BwKBynwv.jpg' -// ); -// expect(videos[3].width).toEqual(720); -// expect(videos[3].height).toEqual(1280); -// expect(videos[3].duration).toEqual(25.133); -// expect(videos[3].format).toEqual('video/mp4'); -// expect(videos[3].type).toEqual('video'); -// }); + const tweet = response.tweet as APITweet; + expect(tweet).toBeTruthy(); + expect(tweet.url).toEqual( + 'https://twitter.com/dangeredwolf/status/1557914172763127808' + ); + expect(tweet.id).toEqual('1557914172763127808'); + expect(tweet.text).toEqual(''); + expect(tweet.author.screen_name?.toLowerCase()).toEqual('dangeredwolf'); + expect(tweet.author.name).toBeTruthy(); + expect(tweet.author.avatar_url).toBeTruthy(); + expect(tweet.author.banner_url).toBeTruthy(); + expect(tweet.author.avatar_color).toBeTruthy(); + expect(tweet.twitter_card).toEqual('player'); + expect(tweet.created_at).toEqual('Fri Aug 12 02:17:38 +0000 2022'); + expect(tweet.created_timestamp).toEqual(1660270658); + expect(tweet.replying_to).toBeNull(); + expect(tweet.media?.videos).toBeTruthy(); + const videos = tweet.media?.videos as APIVideo[]; + expect(videos[0].url).toEqual( + 'https://video.twimg.com/ext_tw_video/1539029945124528130/pu/vid/1662x1080/ZQP4eoQhnGnKcLEb.mp4?tag=14' + ); + expect(videos[0].thumbnail_url).toEqual( + 'https://pbs.twimg.com/ext_tw_video_thumb/1539029945124528130/pu/img/6Z1MXMliums60j03.jpg' + ); + expect(videos[0].width).toEqual(3548); + expect(videos[0].height).toEqual(2304); + expect(videos[0].duration).toEqual(37.75); + expect(videos[0].format).toEqual('video/mp4'); + expect(videos[0].type).toEqual('video'); + expect(videos[1].url).toEqual( + 'https://video.twimg.com/ext_tw_video/1543316856697769984/pu/vid/1920x1080/3fo7b4EnWv2WO8Z1.mp4?tag=14' + ); + expect(videos[1].thumbnail_url).toEqual( + 'https://pbs.twimg.com/ext_tw_video_thumb/1543316856697769984/pu/img/eCl67JRWO8r4r8A4.jpg' + ); + expect(videos[1].width).toEqual(1920); + expect(videos[1].height).toEqual(1080); + expect(videos[1].duration).toEqual(71.855); + expect(videos[1].format).toEqual('video/mp4'); + expect(videos[1].type).toEqual('video'); + expect(videos[2].url).toEqual( + 'https://video.twimg.com/ext_tw_video/1543797953105625088/pu/vid/1920x1080/GHSLxzBrwiDLhLYD.mp4?tag=14' + ); + expect(videos[2].thumbnail_url).toEqual( + 'https://pbs.twimg.com/ext_tw_video_thumb/1543797953105625088/pu/img/2eX2QQkd7b2S1YDl.jpg' + ); + expect(videos[2].width).toEqual(1920); + expect(videos[2].height).toEqual(1080); + expect(videos[2].duration).toEqual(22.018); + expect(videos[2].format).toEqual('video/mp4'); + expect(videos[2].type).toEqual('video'); + expect(videos[3].url).toEqual( + 'https://video.twimg.com/ext_tw_video/1548602342488129536/pu/vid/720x1280/I_D3svYfjBl7_xGS.mp4?tag=14' + ); + expect(videos[3].thumbnail_url).toEqual( + 'https://pbs.twimg.com/ext_tw_video_thumb/1548602342488129536/pu/img/V_1u5Nv5BwKBynwv.jpg' + ); + expect(videos[3].width).toEqual(720); + expect(videos[3].height).toEqual(1280); + expect(videos[3].duration).toEqual(25.133); + expect(videos[3].format).toEqual('video/mp4'); + expect(videos[3].type).toEqual('video'); +}); test('API fetch poll Tweet', async () => { const result = await cacheWrapper( @@ -283,6 +286,7 @@ test('API fetch poll Tweet', async () => { expect(tweet.id).toEqual('1055475950543167488'); expect(tweet.text).toEqual('A poll:'); expect(tweet.author.screen_name?.toLowerCase()).toEqual('twitter'); + expect(tweet.author.id).toEqual('783214'); expect(tweet.author.name).toBeTruthy(); expect(tweet.author.avatar_url).toBeTruthy(); expect(tweet.author.banner_url).toBeTruthy();