New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

twitter-gengar-typescript

Package Overview
Dependencies
Maintainers
0
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

twitter-gengar-typescript - npm Package Compare versions

Comparing version 0.0.26 to 0.0.27

7

.vscode/extensions.json
{
"recommendations": ["orta.vscode-jest"]
"recommendations": [
"orta.vscode-jest",
"ms-vscode.vscode-typescript-next",
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode"
]
}
{
"jest.autoRun": {
"watch": false
}
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports": "explicit",
},
"editor.formatOnSave": true,
},
}

2

package.json
{
"name": "twitter-gengar-typescript",
"version": "0.0.26",
"version": "0.0.27",
"description": "Implementation of Twitter internal API in TypeScript",

@@ -5,0 +5,0 @@ "scripts": {

@@ -12,9 +12,9 @@ # twitter-openapi-typescript

```typescript
import { TwitterOpenApi } from "twitter-openapi-typescript";
import { TwitterOpenApi } from 'twitter-openapi-typescript';
const api = new TwitterOpenApi();
const client = await api.getGuestClient();
const response = await client.getUserApi().getUserByScreenName({ screenName: 'elonmusk' });
console.log(response.data.legacy.screenName);
console.log(`followCount: ${response.data.legacy.friendsCount} followersCount: ${response.data.legacy.followersCount}`);
const api = new TwitterOpenApi();
const client = await api.getGuestClient();
const response = await client.getUserApi().getUserByScreenName({ screenName: 'elonmusk' });
console.log(response.data.legacy.screenName);
console.log(`followCount: ${response.data.legacy.friendsCount} followersCount: ${response.data.legacy.followersCount}`);
```

@@ -25,7 +25,7 @@

```typescript
// ct0 and authToken will also work but it is recommended to set all cookies.
const client = await api.getClientFromCookies({
ct0: "<csrf_token>",
auth_token: "<auth_token>",
});
// ct0 and authToken will also work but it is recommended to set all cookies.
const client = await api.getClientFromCookies({
ct0: '<csrf_token>',
auth_token: '<auth_token>',
});
```

@@ -36,2 +36,3 @@

You should read the Test case.
aaaaa

@@ -45,9 +46,9 @@ <https://github.com/fa0311/twitter-openapi-typescript/tree/master/twitter-openapi-typescript/test/api>

```typescript
import { TwitterOpenApi } from "twitter-openapi-typescript";
TwitterOpenApi.url = "twitter-openapi placeholder json url";
TwitterOpenApi.twitter = "twitter first access url";
TwitterOpenApi.userAgent = "user agent";
TwitterOpenApi.bearer = "bearer token";
TwitterOpenApi.browser_headers = "browser headers";
TwitterOpenApi.api_key = "api key";
import { TwitterOpenApi } from 'twitter-openapi-typescript';
TwitterOpenApi.url = 'twitter-openapi placeholder json url';
TwitterOpenApi.twitter = 'twitter first access url';
TwitterOpenApi.userAgent = 'user agent';
TwitterOpenApi.bearer = 'bearer token';
TwitterOpenApi.browser_headers = 'browser headers';
TwitterOpenApi.api_key = 'api key';
```

@@ -54,0 +55,0 @@

@@ -1,3 +0,1 @@

import * as i from 'twitter-gengar-generated'
import {

@@ -14,38 +12,50 @@ DefaultApiUtils,

} from '@/apis';
import { DefaultFlag } from '@/models';
import { DefaultFlag, initOverrides } from '@/models';
import * as i from 'twitter-openapi-typescript-generated';
import { UsersApiUtils } from './apis/usersApi';
export class TwitterOpenApi {
static hash = '7560ee63488ec9d15f5389e64867f2413701d7dd';
static hash = 'fbfe847e9b3f11e2b25e294827f3637e316d41f0';
static url = `https://raw.githubusercontent.com/fa0311/twitter-openapi/${this.hash}/src/config/placeholder.json`;
static header = "https://raw.githubusercontent.com/fa0311/latest-user-agent/main/header.json"
static twitter = 'https://twitter.com/home';
static userAgent =
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36';
static bearer =
'AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA';
static browser_headers = {
accept: 'text/plain, */*; q=0.01',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'en-US,en;q=0.9',
'cache-control': 'no-cache',
pragma: 'no-cache',
'sec-ch-ua': '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-site',
'user-agent': TwitterOpenApi.userAgent,
};
static api_key = {
'x-twitter-client-language': 'en',
'x-twitter-active-user': 'yes',
...TwitterOpenApi.browser_headers,
async get_browser_headers(): Promise<{ [key: string]: string }> {
const raw = await TwitterOpenApi.fetchApi(TwitterOpenApi.header);
const json = await raw.json();
const ignore = ["host", "connection"];
const keys = Object.keys(json["chrome-fetch"]).filter((key) => !ignore.includes(key));
return {
...keys.reduce((a, b) => ({ ...a, [b]: json["chrome-fetch"][b] }), {}),
'accept-encoding': 'identity',
"priority": "u=1, i",
"referer":"https://twitter.com/home",
};
}
static fetchApi: i.FetchAPI = fetch;
async get_api_key(): Promise<{ [key: string]: string }> {
const data = await this.get_browser_headers();
return {
...data,
'x-twitter-client-language': 'en',
'x-twitter-active-user': 'yes',
authorization: `Bearer ${TwitterOpenApi.bearer}`
};
}
static fetchApi: i.FetchAPI = fetch.bind(globalThis);
initOverrides: initOverrides = {};
setInitOverrides(initOverrides: initOverrides): void {
this.initOverrides = initOverrides;
}
cookie_normalize(cookie: string[]): { [key: string]: string } {

@@ -79,10 +89,18 @@ return cookie.reduce((a, b) => {

headers: { Cookie: this.cookieEncode(cookies) },
...this.initOverrides,
});
cookies = { ...cookies, ...this.cookie_normalize(response.headers.getSetCookie()) };
const html = await TwitterOpenApi.fetchApi(TwitterOpenApi.twitter, {
method: 'GET',
headers: { Cookie: this.cookieEncode(cookies) },
}).then((response) => response.text());
if (response.headers.getSetCookie) {
cookies = { ...cookies, ...this.cookie_normalize(response.headers.getSetCookie()) };
} else {
cookies = { ...cookies, ...this.cookie_normalize(response.headers.get('set-cookie')?.split(', ') || []) };
}
const html = await response.text();
// const html = await TwitterOpenApi.fetchApi(TwitterOpenApi.twitter, {
// method: 'GET',
// headers: { Cookie: this.cookieEncode(cookies) },
// ...this.initOverrides,
// }).then((response) => response.text());
const re = new RegExp('document.cookie="(.*?)";', 'g');

@@ -98,9 +116,7 @@

if (!cookies['gt']) {
const activate_headers = {
...TwitterOpenApi.api_key,
authorization: `Bearer ${TwitterOpenApi.bearer}`,
};
const activate_headers = await this.get_api_key();
const { guest_token } = await TwitterOpenApi.fetchApi('https://api.twitter.com/1.1/guest/activate.json', {
method: 'POST',
headers: activate_headers,
...this.initOverrides,
}).then((response) => response.json());

@@ -118,3 +134,3 @@ cookies['gt'] = guest_token;

async getClientFromCookies(cookies: { [key: string]: string }): Promise<TwitterOpenApiClient> {
let api_key: { [key: string]: string } = { ...TwitterOpenApi.api_key };
const api_key = await this.get_api_key();
if (cookies['ct0']) {

@@ -138,6 +154,7 @@ api_key['x-twitter-auth-type'] = 'OAuth2Session';

async getClient(api: i.Configuration): Promise<TwitterOpenApiClient> {
const flag = (await TwitterOpenApi.fetchApi(TwitterOpenApi.url, { method: 'GET' }).then((res) =>
res.json(),
)) as DefaultFlag;
return new TwitterOpenApiClient(api, flag);
const flag = (await TwitterOpenApi.fetchApi(TwitterOpenApi.url, {
method: 'GET',
...this.initOverrides,
}).then((res) => res.json())) as DefaultFlag;
return new TwitterOpenApiClient(api, flag, this.initOverrides);
}

@@ -147,44 +164,46 @@ }

export class TwitterOpenApiClient {
private config: i.Configuration;
public flag: DefaultFlag;
config: i.Configuration;
flag: DefaultFlag;
initOverrides: initOverrides;
constructor(config: i.Configuration, flag: DefaultFlag) {
constructor(config: i.Configuration, flag: DefaultFlag, initOverrides: initOverrides) {
this.config = config;
this.flag = flag;
this.initOverrides = initOverrides;
}
getDefaultApi(): DefaultApiUtils {
return new DefaultApiUtils(new i.DefaultApi(this.config), this.flag);
return new DefaultApiUtils(new i.DefaultApi(this.config), this.flag, this.initOverrides);
}
getTweetApi(): TweetApiUtils {
return new TweetApiUtils(new i.TweetApi(this.config), this.flag);
return new TweetApiUtils(new i.TweetApi(this.config), this.flag, this.initOverrides);
}
getUserApi(): UserApiUtils {
return new UserApiUtils(new i.UserApi(this.config), this.flag);
return new UserApiUtils(new i.UserApi(this.config), this.flag, this.initOverrides);
}
getUsersApi(): UsersApiUtils {
return new UsersApiUtils(new i.UsersApi(this.config), this.flag);
return new UsersApiUtils(new i.UsersApi(this.config), this.flag, this.initOverrides);
}
getUserListApi(): UserListApiUtils {
return new UserListApiUtils(new i.UserListApi(this.config), this.flag);
return new UserListApiUtils(new i.UserListApi(this.config), this.flag, this.initOverrides);
}
getPostApi(): PostApiUtils {
return new PostApiUtils(new i.PostApi(this.config), this.flag);
return new PostApiUtils(new i.PostApi(this.config), this.flag, this.initOverrides);
}
getV11GetApi(): V11GetApiUtils {
return new V11GetApiUtils(new i.V11GetApi(this.config), this.flag);
return new V11GetApiUtils(new i.V11GetApi(this.config), this.flag, this.initOverrides);
}
getV11PostApi(): V11PostApiUtils {
return new V11PostApiUtils(new i.V11PostApi(this.config), this.flag);
return new V11PostApiUtils(new i.V11PostApi(this.config), this.flag, this.initOverrides);
}
getV20GetApi(): V20GetApiUtils {
return new V20GetApiUtils(new i.V20GetApi(this.config), this.flag);
return new V20GetApiUtils(new i.V20GetApi(this.config), this.flag, this.initOverrides);
}

@@ -191,0 +210,0 @@

@@ -1,4 +0,4 @@

import * as i from 'twitter-gengar-generated'
import { DefaultFlag, RequestParam, TweetApiUtilsData, TwitterApiUtilsResponse, initOverrides } from '@/models';
import { buildHeader, buildTweetApiUtils, errorCheck, getKwargs } from '@/utils';
import { RequestParam, DefaultFlag, TwitterApiUtilsResponse, TweetApiUtilsData } from '@/models';
import * as i from 'twitter-openapi-typescript-generated';

@@ -18,6 +18,8 @@ export type ProfileSpotlightsQueryParam = {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.DefaultApi, flag: DefaultFlag) {
constructor(api: i.DefaultApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -28,3 +30,3 @@

const args = getKwargs(this.flag[param.key], param.param);
const response = await apiFn(args);
const response = await apiFn(args, this.initOverrides);
const checked = errorCheck(await response.value());

@@ -31,0 +33,0 @@ const data = param.convertFn(checked);

export { DefaultApiUtils } from './defaultApi';
export { InitialStateApiUtils } from './initialStateApi';
export { PostApiUtils } from './postApi';
export { TweetApiUtils } from './tweetApi';
export { PostApiUtils } from './postApi';
export { UserApiUtils } from './userApi';
export { UserListApiUtils } from './userListApi';
export { UsersApiUtils } from './usersApi';
export { UserListApiUtils } from './userListApi';
export { V11GetApiUtils } from './v11GetApi';
export { V11PostApiUtils } from './v11PostApi';
export { V20GetApiUtils } from './v20GetApi';
export { InitialStateApiUtils } from './initialStateApi';

@@ -1,6 +0,4 @@

import * as i from 'twitter-gengar-generated'
import { DefaultFlag } from '@/models';
import { DefaultFlag, TwitterApiUtilsResponse, initOverrides } from '@/models';
import { buildHeader, errorCheck } from '@/utils';
import { TwitterApiUtilsResponse } from '@/models';
import { error } from 'console';
import * as i from 'twitter-openapi-typescript-generated';

@@ -39,9 +37,17 @@ type PostCreateTweetParam = {

type PostConversationControlParam = {
tweetId: string;
mode: string;
extraParam?: { [key: string]: any };
};
export class PostApiUtils {
api: i.PostApi;
flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.PostApi, flag: DefaultFlag) {
constructor(api: i.PostApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -194,2 +200,37 @@

}
async postConversationControl(
param: PostConversationControlParam,
): Promise<TwitterApiUtilsResponse<any>> {
const args = {
tweetId: param.tweetId,
mode: param.mode,
}
// hb1elGcj6769uT8qVYqtjw
// console.log(this.flag)
// console.log(this.flag['ConversationControlChange'])
// console.log(this.flag['ConversationControlChange']['queryId'])
const queryId = 'ConversationControlChange';
const response = await this.api.postConversationControlChangeRaw({
pathQueryId: 'hb1elGcj6769uT8qVYqtjw', // this.flag[queryId]['queryId'],
postConversationControlChangeRequest: {
queryId: 'hb1elGcj6769uT8qVYqtjw', // this.flag[queryId]['queryId'],
variables: args,
}
});
console.dir(response, {depth: null})
return {
raw: { response: response.raw },
header: buildHeader(response.raw.headers),
data: errorCheck(await response.value()),
};
}
}

@@ -1,10 +0,19 @@

import * as i from 'twitter-gengar-generated'
import {
DefaultFlag,
RequestParam,
TimelineApiUtilsResponse,
TweetApiUtilsData,
TwitterApiUtilsResponse,
TweetApiUtilsData,
TimelineApiUtilsResponse,
initOverrides,
} from '@/models';
import { buildHeader, entriesCursor, errorCheck, getKwargs, instructionToEntry, tweetEntriesConverter } from '@/utils';
import {
buildHeader,
entriesCursor,
errorCheck,
getKwargs,
instructionConverter,
instructionToEntry,
tweetEntriesConverter,
} from '@/utils';
import * as i from 'twitter-openapi-typescript-generated';

@@ -83,6 +92,8 @@ type GetTweetDetailParam = {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.TweetApi, flag: DefaultFlag) {
constructor(api: i.TweetApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -93,7 +104,7 @@

const args = getKwargs(this.flag[param.key], param.param);
const response = await apiFn(args);
const response = await apiFn(args, this.initOverrides);
const checked = errorCheck(await response.value());
const instruction = param.convertFn(checked);
const entry = instructionToEntry(instruction);
const data = tweetEntriesConverter(entry);
const data = [...tweetEntriesConverter(entry), ...instructionConverter(instruction)];
return {

@@ -100,0 +111,0 @@ raw: {

@@ -1,4 +0,4 @@

import * as i from 'twitter-gengar-generated'
import { RequestParam, DefaultFlag, UserApiUtilsData, TwitterApiUtilsResponse } from '@/models';
import { DefaultFlag, RequestParam, TwitterApiUtilsResponse, UserApiUtilsData, initOverrides } from '@/models';
import { buildHeader, errorCheck, getKwargs, userOrNullConverter } from '@/utils';
import * as i from 'twitter-openapi-typescript-generated';

@@ -20,6 +20,8 @@ type getUserByScreenNameParam = {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.UserApi, flag: DefaultFlag) {
constructor(api: i.UserApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -30,3 +32,3 @@

const args = getKwargs(this.flag[param.key], param.param);
const response = await apiFn(args);
const response = await apiFn(args, this.initOverrides);
const checked = errorCheck(await response.value());

@@ -33,0 +35,0 @@ const result = param.convertFn(checked);

@@ -1,20 +0,19 @@

import * as i from 'twitter-gengar-generated'
import {
DefaultFlag,
RequestParam,
DefaultFlag,
ApiUtilsRaw,
TimelineApiUtilsResponse,
TwitterApiUtilsResponse,
UserApiUtilsData,
TwitterApiUtilsRaw,
initOverrides,
} from '@/models';
import {
buildHeader,
userResultConverter,
entriesCursor,
errorCheck,
getKwargs,
instructionToEntry,
userEntriesConverter,
getKwargs,
errorCheck,
userResultConverter,
} from '@/utils';
import * as i from 'twitter-openapi-typescript-generated';

@@ -61,6 +60,8 @@ type GetFollowersParam = {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.UserListApi, flag: DefaultFlag) {
constructor(api: i.UserListApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -71,3 +72,3 @@

const args = getKwargs(this.flag[param.key], param.param);
const response = await apiFn(args);
const response = await apiFn(args, this.initOverrides);
const checked = errorCheck(await response.value());

@@ -74,0 +75,0 @@ const instruction = param.convertFn(checked);

@@ -1,4 +0,4 @@

import * as i from 'twitter-gengar-generated'
import { RequestParam, DefaultFlag, UserApiUtilsData, TwitterApiUtilsResponse } from '@/models';
import { buildHeader, errorCheck, getKwargs, userOrNullConverter, userResultConverter } from '@/utils';
import { DefaultFlag, RequestParam, TwitterApiUtilsResponse, UserApiUtilsData, initOverrides } from '@/models';
import { buildHeader, errorCheck, getKwargs, userResultConverter } from '@/utils';
import * as i from 'twitter-openapi-typescript-generated';

@@ -15,6 +15,8 @@ type getUsersByRestIdsParam = {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.UsersApi, flag: DefaultFlag) {
constructor(api: i.UsersApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -25,3 +27,3 @@

const args = getKwargs(this.flag[param.key], param.param);
const response = await apiFn(args);
const response = await apiFn(args, this.initOverrides);
const checked = errorCheck(await response.value());

@@ -28,0 +30,0 @@ const result = param.convertFn(checked);

@@ -1,3 +0,3 @@

import * as i from 'twitter-gengar-generated'
import { DefaultFlag } from '@/models';
import { DefaultFlag, initOverrides } from '@/models';
import * as i from 'twitter-openapi-typescript-generated';

@@ -7,7 +7,9 @@ export class V11GetApiUtils {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.V11GetApi, flag: DefaultFlag) {
constructor(api: i.V11GetApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}
}

@@ -1,4 +0,4 @@

import * as i from 'twitter-gengar-generated'
import { DefaultFlag, TwitterApiUtilsResponse } from '@/models';
import { DefaultFlag, TwitterApiUtilsResponse, initOverrides } from '@/models';
import { buildHeader } from '@/utils';
import * as i from 'twitter-openapi-typescript-generated';

@@ -18,6 +18,8 @@ type PostCreateFriendshipsParam = {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.V11PostApi, flag: DefaultFlag) {
constructor(api: i.V11PostApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}

@@ -24,0 +26,0 @@

@@ -1,3 +0,3 @@

import * as i from 'twitter-gengar-generated'
import { DefaultFlag } from '@/models';
import { DefaultFlag, initOverrides } from '@/models';
import * as i from 'twitter-openapi-typescript-generated';

@@ -7,7 +7,9 @@ export class V20GetApiUtils {

flag: DefaultFlag;
initOverrides: initOverrides;
constructor(api: i.V20GetApi, flag: DefaultFlag) {
constructor(api: i.V20GetApi, flag: DefaultFlag, initOverrides: initOverrides) {
this.api = api;
this.flag = flag;
this.initOverrides = initOverrides;
}
}

@@ -0,4 +1,3 @@

export * from '@/api';
export * from '@/apis';
export * from '@/models';
export * from '@/models';
export * from '@/api';
export * from './flag';
export * from './header';
export * from './response';
export * from './timeline';
export * from './response';
export * from './utils';

@@ -1,2 +0,2 @@

import * as i from 'twitter-gengar-generated'
import * as i from 'twitter-openapi-typescript-generated';

@@ -3,0 +3,0 @@ export type CursorApiUtilsResponse = {

@@ -1,4 +0,5 @@

import * as i from 'twitter-gengar-generated'
import * as i from 'twitter-openapi-typescript-generated';
export type ApiFunction<T> = (requestParameters: any) => Promise<i.ApiResponse<T>>;
export type initOverrides = RequestInit | i.InitOverrideFunction;
export type ApiFunction<T> = (requestParameters: any, initOverrides?: initOverrides) => Promise<i.ApiResponse<T>>;

@@ -5,0 +6,0 @@ export type RequestParam<T1, T2> = {

@@ -1,3 +0,3 @@

import * as i from 'twitter-gengar-generated'
import { TweetApiUtilsData, UserApiUtilsData, CursorApiUtilsResponse, ApiUtilsHeader } from '@/models';
import { ApiUtilsHeader, CursorApiUtilsResponse, TweetApiUtilsData, UserApiUtilsData } from '@/models';
import * as i from 'twitter-openapi-typescript-generated';

@@ -32,2 +32,4 @@ export const getKwargs = (flag: { [key: string]: any }, additional: { [key: string]: any }): any => {

return (e as i.TimelineAddEntries).entries;
} else if (e.type == i.InstructionType.TimelineAddToModule) {
return [];
} else if (e.type == i.InstructionType.TimelineReplaceEntry) {

@@ -40,2 +42,19 @@ return [(e as i.TimelineReplaceEntry).entry];

export const instructionConverter = (item: i.InstructionUnion[]): TweetApiUtilsData[] => {
return item
.flatMap((e) => {
if (e.type == i.InstructionType.TimelineAddEntries) {
return [];
} else if (e.type == i.InstructionType.TimelineAddToModule) {
const item = (e as i.TimelineAddToModule).moduleItems ?? [];
return moduleConverter(item);
} else if (e.type == i.InstructionType.TimelineReplaceEntry) {
return [];
}
return [];
})
.filter((e): e is NonNullable<typeof e> => e != undefined)
.flat();
};
export const tweetEntriesConverter = (item: i.TimelineAddEntry[]): TweetApiUtilsData[] => {

@@ -48,23 +67,45 @@ return item

if (timeline == undefined) return undefined;
return buildTweetApiUtils({
result: timeline.tweetResults,
promotedMetadata: timeline.promotedMetadata,
});
return [
buildTweetApiUtils({
result: timeline.tweetResults,
promotedMetadata: timeline.promotedMetadata,
}),
];
} else if (e.content.entryType == i.ContentEntryType.TimelineTimelineModule) {
const item = (e.content as i.TimelineTimelineModule).items ?? [];
const timelineList = item
.filter((e) => e.item.itemContent.itemType == i.ContentItemType.TimelineTweet)
.map((e) => e.item.itemContent as i.TimelineTweet);
if (timelineList.length == 0) return undefined;
const timeline = timelineList[0];
return buildTweetApiUtils({
result: timeline.tweetResults,
promotedMetadata: timeline.promotedMetadata,
reply: timelineList.slice(1),
});
return moduleConverter(item);
}
})
.filter((e): e is NonNullable<typeof e> => e != undefined);
.filter((e): e is NonNullable<typeof e> => e != undefined)
.map((e) => e.filter((e): e is NonNullable<typeof e> => e != undefined))
.flat();
};
export const moduleConverter = (item: i.ModuleItem[]): TweetApiUtilsData[] => {
const timelineList = item
.filter((e) => e.item.itemContent.itemType == i.ContentItemType.TimelineTweet)
.map((e) => e.item.itemContent as i.TimelineTweet);
if (timelineList.length == 0) return [];
if (timelineList[0].tweetDisplayType == i.TimelineTweetTweetDisplayTypeEnum.MediaGrid) {
return timelineList
.map((e) =>
buildTweetApiUtils({
result: e.tweetResults,
promotedMetadata: e.promotedMetadata,
}),
)
.filter((e): e is NonNullable<typeof e> => e != undefined);
} else {
const timeline = timelineList[0];
return [
buildTweetApiUtils({
result: timeline.tweetResults,
promotedMetadata: timeline.promotedMetadata,
reply: timelineList.slice(1),
}),
].filter((e): e is NonNullable<typeof e> => e != undefined);
}
};
type buildTweetApiUtilsArgs = {

@@ -109,3 +150,2 @@ result: i.ItemResult;

}
throw Error();
};

@@ -112,0 +152,0 @@

@@ -7,3 +7,2 @@ import { getClient, logger } from '@test/init';

const client = await getClient();
console.dir(client, { depth: 10 })
const response = await client.getDefaultApi().getProfileSpotlightsQuery({ screenName: 'elonmusk' });

@@ -10,0 +9,0 @@ const legacy = response.data.result.legacy;

@@ -62,1 +62,10 @@ import { getClient, logger } from '@test/init';

});
test('postConverastionControll', async () => {
logger.log('postConversationControll');
console.log("Hello");
const client = await getClient();
const response = await client.getPostApi().postConversationControl({ tweetId: '1818655939634807035', mode: 'ByInvitation' });
expect(response.raw.response.ok).toBe(true);
});

@@ -7,3 +7,3 @@ import { getClient, logger } from '@test/init';

const client = await getClient();
const response = await client.getTweetApi().getTweetDetail({ focalTweetId: '1736190945207505116' });
const response = await client.getTweetApi().getTweetDetail({ focalTweetId: '1349129669258448897' });
response.data.data.filter((e) => !e.promotedMetadata).forEach((e) => printTweet(e));

@@ -10,0 +10,0 @@ expect(response.raw.response.ok).toBe(true);

@@ -1,2 +0,2 @@

import { getClient, logger } from '@test/init';
import { getClient } from '@test/init';

@@ -3,0 +3,0 @@ test('postCreateFriendships', async () => {

import { TwitterOpenApi } from '@/api';
import * as dotenv from 'dotenv';
import * as log4js from 'log4js';
dotenv.config();
const authToken = 'ede342a1204c000f4709b031d3a43cf15ce20a79'
const CsrfToken = '59a0f47a02729ed3a002838dfcf3a13ea15cd6dfa99c602e761cad1f25594d165f2226a513d9d956e6011e3fdddf5da76ebc4b59fdccc0349207dfa860672ef52b37230520791cc3a93c647451c0d8ae'
const authToken = '30c0d12b9d3d24ceb4b0850745db0bad3cd6bf54'
const CsrfToken = 'fbcec026e53d657acc7b5d652333f68c2b388952b76bfcda0a7ba0166f23d2664bb8d0b7c8a717626e360b76aae9e01ae2af289fd0910ac1f0d969624798c8c61856dabe340b14ec608bbc07cab13992'
export const logger = log4js

@@ -28,2 +25,8 @@ .configure({

export type Cookie = {
name: string;
domain: string;
value: string;
};
export const getClient = async () => {

@@ -30,0 +33,0 @@ const api = new TwitterOpenApi();

@@ -1,2 +0,2 @@

import { getClient, logger } from '@test/init';
import { getClient } from '@test/init';

@@ -3,0 +3,0 @@ test('getHomeTimelineRaw', async () => {

@@ -1,2 +0,2 @@

import * as i from 'twitter-gengar-generated'
import * as i from 'twitter-openapi-typescript-generated';

@@ -3,0 +3,0 @@ import { TweetApiUtilsData, UserApiUtilsData } from '@/models';

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc