11import * as i from 'twitter-openapi-typescript-generated' ;
2- import { DefaultFlag , TweetListApiUtilsResponse , ApiUtilsRaw , RequestParam } from '@/models' ;
3- import { buildHeader , entriesCursor , instructionToEntry , tweetEntriesConverter } from '@/utils' ;
2+ import {
3+ DefaultFlag ,
4+ RequestParam ,
5+ TwitterApiUtilsResponse ,
6+ TweetApiUtilsData ,
7+ TimelineApiUtilsResponse ,
8+ } from '@/models' ;
9+ import { buildHeader , entriesCursor , errorCheck , getKwargs , instructionToEntry , tweetEntriesConverter } from '@/utils' ;
410
511type GetTweetDetailParam = {
612 focalTweetId : string ;
@@ -69,6 +75,8 @@ type GetBookmarksParam = {
6975 extraParam ?: { [ key : string ] : any } ;
7076} ;
7177
78+ type ResponseType = TwitterApiUtilsResponse < TimelineApiUtilsResponse < TweetApiUtilsData > > ;
79+
7280export class TweetApiUtils {
7381 api : i . TweetApi ;
7482 flag : DefaultFlag ;
@@ -78,36 +86,31 @@ export class TweetApiUtils {
7886 this . flag = flag ;
7987 }
8088
81- async request < T > ( param : RequestParam < i . InstructionUnion [ ] , T > ) : Promise < TweetListApiUtilsResponse > {
89+ async request < T > ( param : RequestParam < i . InstructionUnion [ ] , T > ) : Promise < ResponseType > {
8290 const apiFn : typeof param . apiFn = param . apiFn . bind ( this . api ) ;
83- const fieldTogglesFn = ( ) => {
84- if ( this . flag [ param . key ] [ 'fieldToggles' ] == null ) return { fieldToggles : '' } ;
85- return { fieldToggles : JSON . stringify ( this . flag [ param . key ] [ 'fieldToggles' ] ) } ;
86- } ;
87- const response = await apiFn ( {
88- pathQueryId : this . flag [ param . key ] [ 'queryId' ] ,
89- queryId : this . flag [ param . key ] [ 'queryId' ] ,
90- variables : JSON . stringify ( { ...this . flag [ param . key ] [ 'variables' ] , ...param . param } ) ,
91- features : JSON . stringify ( this . flag [ param . key ] [ 'features' ] ) ,
92- ...fieldTogglesFn ( ) ,
93- } ) ;
94- const instruction = param . convertFn ( await response . value ( ) ) ;
91+ const args = getKwargs ( this . flag [ param . key ] , param . param ) ;
92+ const response = await apiFn ( args ) ;
93+ const checked = errorCheck ( await response . value ( ) ) ;
94+ const instruction = param . convertFn ( checked ) ;
9595 const entry = instructionToEntry ( instruction ) ;
9696 const data = tweetEntriesConverter ( entry ) ;
97- const raw : ApiUtilsRaw = {
98- response : response . raw ,
99- instruction : instruction ,
100- entry : entry ,
101- } ;
10297 return {
103- raw : raw ,
98+ raw : {
99+ response : response . raw ,
100+ } ,
104101 header : buildHeader ( response . raw . headers ) ,
105- cursor : entriesCursor ( entry ) ,
106- data : data ,
102+ data : {
103+ raw : {
104+ instruction,
105+ entry,
106+ } ,
107+ cursor : entriesCursor ( entry ) ,
108+ data : data ,
109+ } ,
107110 } ;
108111 }
109112
110- async getTweetDetail ( param : GetTweetDetailParam ) : Promise < TweetListApiUtilsResponse > {
113+ async getTweetDetail ( param : GetTweetDetailParam ) : Promise < ResponseType > {
111114 const args = {
112115 focalTweetId : param . focalTweetId ,
113116 ...( param . cursor == null ? { } : { cursor : param . cursor } ) ,
@@ -123,7 +126,7 @@ export class TweetApiUtils {
123126 } ) ;
124127 return response ;
125128 }
126- async getSearchTimeline ( param : GetSearchTimelineParam ) : Promise < TweetListApiUtilsResponse > {
129+ async getSearchTimeline ( param : GetSearchTimelineParam ) : Promise < ResponseType > {
127130 const args = {
128131 rawQuery : param . rawQuery ,
129132 ...( param . product == null ? { } : { product : param . product } ) ,
@@ -141,7 +144,7 @@ export class TweetApiUtils {
141144 return response ;
142145 }
143146
144- async getHomeTimeline ( param : GetHomeTimelineParam = { } ) : Promise < TweetListApiUtilsResponse > {
147+ async getHomeTimeline ( param : GetHomeTimelineParam = { } ) : Promise < ResponseType > {
145148 const args = {
146149 ...( param . count == null ? { } : { count : param . count } ) ,
147150 ...( param . couser == null ? { } : { couser : param . couser } ) ,
@@ -157,7 +160,7 @@ export class TweetApiUtils {
157160 return response ;
158161 }
159162
160- async getHomeLatestTimeline ( param : GetHomeLatestTimelineParam = { } ) : Promise < TweetListApiUtilsResponse > {
163+ async getHomeLatestTimeline ( param : GetHomeLatestTimelineParam = { } ) : Promise < ResponseType > {
161164 const args = {
162165 ...( param . count == null ? { } : { count : param . count } ) ,
163166 ...( param . cursor == null ? { } : { cursor : param . cursor } ) ,
@@ -173,7 +176,7 @@ export class TweetApiUtils {
173176 return response ;
174177 }
175178
176- async getListLatestTweetsTimeline ( param : GetListLatestTweetsTimelineParam ) : Promise < TweetListApiUtilsResponse > {
179+ async getListLatestTweetsTimeline ( param : GetListLatestTweetsTimelineParam ) : Promise < ResponseType > {
177180 const args = {
178181 listId : param . listId ,
179182 ...( param . count == null ? { } : { count : param . count } ) ,
@@ -190,7 +193,7 @@ export class TweetApiUtils {
190193 return response ;
191194 }
192195
193- async getUserTweets ( param : GetUserTweetsParam ) : Promise < TweetListApiUtilsResponse > {
196+ async getUserTweets ( param : GetUserTweetsParam ) : Promise < ResponseType > {
194197 const args = {
195198 userId : param . userId ,
196199 ...( param . count == null ? { } : { count : param . count } ) ,
@@ -207,7 +210,7 @@ export class TweetApiUtils {
207210 return response ;
208211 }
209212
210- async getUserTweetsAndReplies ( param : GetUserTweetsAndRepliesParam ) : Promise < TweetListApiUtilsResponse > {
213+ async getUserTweetsAndReplies ( param : GetUserTweetsAndRepliesParam ) : Promise < ResponseType > {
211214 const args = {
212215 userId : param . userId ,
213216 ...( param . count == null ? { } : { count : param . count } ) ,
@@ -224,7 +227,7 @@ export class TweetApiUtils {
224227 return response ;
225228 }
226229
227- async getUserMedia ( param : GetUserMediaParam ) : Promise < TweetListApiUtilsResponse > {
230+ async getUserMedia ( param : GetUserMediaParam ) : Promise < ResponseType > {
228231 const args = {
229232 userId : param . userId ,
230233 ...( param . count == null ? { } : { count : param . count } ) ,
@@ -240,7 +243,7 @@ export class TweetApiUtils {
240243 } ) ;
241244 return response ;
242245 }
243- async getLikes ( param : GetLikesParam ) : Promise < TweetListApiUtilsResponse > {
246+ async getLikes ( param : GetLikesParam ) : Promise < ResponseType > {
244247 const args = {
245248 userId : param . userId ,
246249 ...( param . count == null ? { } : { count : param . count } ) ,
@@ -256,7 +259,7 @@ export class TweetApiUtils {
256259 } ) ;
257260 return response ;
258261 }
259- async getBookmarks ( param : GetBookmarksParam = { } ) : Promise < TweetListApiUtilsResponse > {
262+ async getBookmarks ( param : GetBookmarksParam = { } ) : Promise < ResponseType > {
260263 const args = {
261264 ...( param . count == null ? { } : { count : param . count } ) ,
262265 ...( param . cursor == null ? { } : { cursor : param . cursor } ) ,
0 commit comments