@@ -3,8 +3,36 @@ import { DefaultFlag } from '@/types';
33import { buildHeader , entriesCursor } from '@/models/api' ;
44import { TwitterApiUtilsResponse } from '@/types/response' ;
55
6+ type Response < T > = Promise < TwitterApiUtilsResponse < T > > ;
7+
68type PostCreateTweetParam = {
79 tweetText : string ;
10+ extraParam ?: { [ key : string ] : any } ;
11+ } ;
12+
13+ type PostDeleteTweetParam = {
14+ tweetId : string ;
15+ extraParam ?: { [ key : string ] : any } ;
16+ } ;
17+
18+ type PostCreateRetweetParam = {
19+ tweetId : string ;
20+ extraParam ?: { [ key : string ] : any } ;
21+ } ;
22+
23+ type PostDeleteRetweetParam = {
24+ sourceTweetId : string ;
25+ extraParam ?: { [ key : string ] : any } ;
26+ } ;
27+
28+ type PostFavoriteTweetParam = {
29+ tweetId : string ;
30+ extraParam ?: { [ key : string ] : any } ;
31+ } ;
32+
33+ type PostUnfavoriteTweetParam = {
34+ tweetId : string ;
35+ extraParam ?: { [ key : string ] : any } ;
836} ;
937
1038export class PostApiUtils {
@@ -16,39 +44,126 @@ export class PostApiUtils {
1644 this . flag = flag ;
1745 }
1846
19- mergeDefaultValue < T > ( defaultValue : T | undefined , value : T | undefined ) : T {
20- if ( value == undefined ) return defaultValue ;
21- if ( defaultValue == undefined ) return value ;
22- if ( typeof defaultValue === 'object' ) {
23- if ( Array . isArray ( value ) ) {
24- return value . map ( ( v ) => this . mergeDefaultValue ( defaultValue [ 0 ] , v ) ) as T ;
25- } else {
26- const key = [ ...Object . keys ( defaultValue ) , ...Object . keys ( value ) ] ;
27- return key . reduce ( ( v , k ) => ( { ...v , [ k ] : this . mergeDefaultValue ( defaultValue [ k ] , value [ k ] ) } ) , < T > { } ) ;
28- }
29- }
30- return value ;
47+ async postCreateTweet ( param : PostCreateTweetParam ) : Promise < TwitterApiUtilsResponse < i . CreateTweetResponse > > {
48+ const args = {
49+ tweetText : param . tweetText ,
50+ ...param . extraParam ,
51+ } ;
52+ const queryId = 'CreateTweet' ;
53+ const features = i . PostCreateTweetRequestFeaturesFromJSON ( this . flag [ queryId ] [ 'features' ] ) ;
54+ const variables = i . PostCreateTweetRequestVariablesFromJSON ( this . flag [ queryId ] [ 'variables' ] ) ;
55+ const response = await this . api . postCreateTweetRaw ( {
56+ postCreateTweetRequest : {
57+ queryId : queryId ,
58+ features : features ,
59+ variables : { ...variables , ...args } ,
60+ } ,
61+ } ) ;
62+ return {
63+ raw : { response : response . raw } ,
64+ header : buildHeader ( response . raw . headers ) ,
65+ data : await response . value ( ) ,
66+ } ;
3167 }
3268
33- async postCreateTweet ( param : PostCreateTweetParam ) : Promise < TwitterApiUtilsResponse < i . CreateTweetResponse > > {
34- const value = this . mergeDefaultValue ( i . PostCreateTweetRequestFromJSON ( this . flag . CreateTweet ) , {
35- variables : {
36- tweetText : param . tweetText ,
37- darkRequest : undefined ,
38- media : undefined ,
39- semanticAnnotationIds : undefined ,
69+ async postDeleteTweet ( param : PostDeleteTweetParam ) : Promise < TwitterApiUtilsResponse < i . DeleteTweetResponse > > {
70+ const args = {
71+ tweetId : param . tweetId ,
72+ ...param . extraParam ,
73+ } ;
74+ const queryId = 'DeleteTweet' ;
75+ const variables = i . PostDeleteTweetRequestVariablesFromJSON ( this . flag [ queryId ] [ 'variables' ] ) ;
76+ const response = await this . api . postDeleteTweetRaw ( {
77+ postDeleteTweetRequest : {
78+ queryId : queryId ,
79+ variables : { ...variables , ...args } ,
4080 } ,
41- features : undefined ,
42- queryId : undefined ,
4381 } ) ;
44- const response = await this . api . postCreateTweetRaw ( {
45- postCreateTweetRequest : value ,
82+ return {
83+ raw : { response : response . raw } ,
84+ header : buildHeader ( response . raw . headers ) ,
85+ data : await response . value ( ) ,
86+ } ;
87+ }
88+
89+ async postCreateRetweet ( param : PostCreateRetweetParam ) : Promise < TwitterApiUtilsResponse < i . CreateRetweetResponse > > {
90+ const args = {
91+ tweetId : param . tweetId ,
92+ ...param . extraParam ,
93+ } ;
94+ const queryId = 'CreateRetweet' ;
95+ const variables = i . PostCreateTweetRequestVariablesFromJSON ( this . flag [ queryId ] [ 'variables' ] ) ;
96+ const response = await this . api . postCreateRetweetRaw ( {
97+ postCreateRetweetRequest : {
98+ queryId : queryId ,
99+ variables : { ...variables , ...args } ,
100+ } ,
101+ } ) ;
102+ return {
103+ raw : { response : response . raw } ,
104+ header : buildHeader ( response . raw . headers ) ,
105+ data : await response . value ( ) ,
106+ } ;
107+ }
108+ async postDeleteRetweet ( param : PostDeleteRetweetParam ) : Promise < TwitterApiUtilsResponse < i . DeleteRetweetResponse > > {
109+ const args = {
110+ sourceTweetId : param . sourceTweetId ,
111+ ...param . extraParam ,
112+ } ;
113+ const queryId = 'DeleteRetweet' ;
114+ const variables = i . PostDeleteRetweetRequestVariablesFromJSON ( this . flag [ queryId ] [ 'variables' ] ) ;
115+ const response = await this . api . postDeleteRetweetRaw ( {
116+ postDeleteRetweetRequest : {
117+ queryId : queryId ,
118+ variables : { ...variables , ...args } ,
119+ } ,
120+ } ) ;
121+ return {
122+ raw : { response : response . raw } ,
123+ header : buildHeader ( response . raw . headers ) ,
124+ data : await response . value ( ) ,
125+ } ;
126+ }
127+
128+ async postFavoriteTweet (
129+ param : PostFavoriteTweetParam ,
130+ ) : Promise < TwitterApiUtilsResponse < i . FavoriteTweetResponseData > > {
131+ const args = {
132+ tweetId : param . tweetId ,
133+ ...param . extraParam ,
134+ } ;
135+ const queryId = 'FavoriteTweet' ;
136+ const variables = i . PostDeleteTweetRequestVariablesFromJSON ( this . flag [ queryId ] [ 'variables' ] ) ;
137+ const response = await this . api . postFavoriteTweetRaw ( {
138+ postFavoriteTweetRequest : {
139+ queryId : queryId ,
140+ variables : { ...variables , ...args } ,
141+ } ,
46142 } ) ;
47- const raw = {
48- response : response . raw ,
143+ return {
144+ raw : { response : response . raw } ,
145+ header : buildHeader ( response . raw . headers ) ,
146+ data : await response . value ( ) ,
49147 } ;
148+ }
149+
150+ async postUnfavoriteTweet (
151+ param : PostUnfavoriteTweetParam ,
152+ ) : Promise < TwitterApiUtilsResponse < i . UnfavoriteTweetResponseData > > {
153+ const args = {
154+ tweetId : param . tweetId ,
155+ ...param . extraParam ,
156+ } ;
157+ const queryId = 'UnfavoriteTweet' ;
158+ const variables = i . PostDeleteTweetRequestVariablesFromJSON ( this . flag [ queryId ] [ 'variables' ] ) ;
159+ const response = await this . api . postUnfavoriteTweetRaw ( {
160+ postUnfavoriteTweetRequest : {
161+ queryId : queryId ,
162+ variables : { ...variables , ...args } ,
163+ } ,
164+ } ) ;
50165 return {
51- raw : raw ,
166+ raw : { response : response . raw } ,
52167 header : buildHeader ( response . raw . headers ) ,
53168 data : await response . value ( ) ,
54169 } ;
0 commit comments