11import * as i from 'twitter-openapi-typescript-generated' ;
22import { DefaultFlag } from '@/types' ;
3+ import { buildHeader , entriesCursor } from '@/models/api' ;
4+ import { TwitterApiUtilsResponse } from '@/types/response' ;
5+
6+ type PostCreateTweetParam = {
7+ tweetText : string ;
8+ } ;
39
410export class PostApiUtils {
511 api : i . PostApi ;
@@ -9,4 +15,42 @@ export class PostApiUtils {
915 this . api = api ;
1016 this . flag = flag ;
1117 }
18+
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 ;
31+ }
32+
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 ,
40+ } ,
41+ features : undefined ,
42+ queryId : undefined ,
43+ } ) ;
44+ const response = await this . api . postCreateTweetRaw ( {
45+ postCreateTweetRequest : value ,
46+ } ) ;
47+ const raw = {
48+ response : response . raw ,
49+ } ;
50+ return {
51+ raw : raw ,
52+ header : buildHeader ( response . raw . headers ) ,
53+ data : await response . value ( ) ,
54+ } ;
55+ }
1256}
0 commit comments