mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 19:07:08 +00:00
* added missing params from statuses/update https://developer.twitter.com/en/docs/twitter-api/v1/tweets/post-and-engage/api-reference/post-statuses-update * made all params optional and changed types * better type for exclude_reply_user_ids I tested and exclude_reply_user_ids param can also be just a string Co-authored-by: Abraham Williams <4braham@gmail.com> Co-authored-by: Abraham Williams <4braham@gmail.com>
393 lines
13 KiB
TypeScript
393 lines
13 KiB
TypeScript
// Type definitions for twit 2.2
|
|
// Project: https://github.com/ttezel/twit
|
|
// Definitions by: Volox <https://github.com/Volox>
|
|
// sapphiredev <https://github.com/sapphiredev>
|
|
// abraham <https://github.com/abraham>
|
|
// siwalik <https://github.com/siwalikm>
|
|
// plhery <https://github.com/plhery>
|
|
// justGoscha <https://github.com/justgoscha>
|
|
// darkade <https://github.com/darkade>
|
|
// brianjychan <https://github.com/brianjychan>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// TypeScript Version: 2.3
|
|
|
|
/// <reference types="node" />
|
|
/// <reference types="geojson" />
|
|
|
|
declare module 'twit' {
|
|
import { IncomingMessage } from 'http';
|
|
import { EventEmitter } from 'events';
|
|
|
|
namespace Twit {
|
|
export type StreamEndpoint = 'statuses/filter' | 'statuses/sample' | 'statuses/firehose' | 'user' | 'site';
|
|
|
|
export namespace Twitter {
|
|
export type ResultType = 'mixed' | 'popular' | 'recent';
|
|
|
|
/**
|
|
* @see https://dev.twitter.com/overview/api/tweets#obj-contributors
|
|
*/
|
|
export interface Contributors {
|
|
id: number;
|
|
id_str: string;
|
|
screen_name: string;
|
|
}
|
|
|
|
/**
|
|
* @see https://developer.twitter.com/en/docs/tweets/enrichments/overview/matching-rules
|
|
*/
|
|
export interface MatchingRules {
|
|
tag: null;
|
|
id: number;
|
|
id_str: string;
|
|
}
|
|
|
|
/**
|
|
* @see https://dev.twitter.com/overview/api/entities
|
|
*/
|
|
export interface HashtagEntity {
|
|
indices: [number, number];
|
|
text: string;
|
|
}
|
|
export interface Size {
|
|
h: number;
|
|
w: number;
|
|
resize: 'crop' | 'fit';
|
|
}
|
|
export interface Sizes {
|
|
thumb: Size;
|
|
large: Size;
|
|
medium: Size;
|
|
small: Size;
|
|
}
|
|
export interface MediaEntity {
|
|
id: number;
|
|
id_str: string;
|
|
indices: [number, number];
|
|
url: string;
|
|
display_url: string;
|
|
expanded_url: string;
|
|
media_url: string;
|
|
media_url_https: string;
|
|
sizes: Sizes;
|
|
source_status_id: number;
|
|
source_status_id_str: string;
|
|
type: string;
|
|
}
|
|
export interface UrlEntity {
|
|
url: string;
|
|
display_url: string;
|
|
expanded_url: string;
|
|
indices: [number, number];
|
|
}
|
|
export interface UserMentionEntity {
|
|
id: number;
|
|
id_str: string;
|
|
indices: [number, number];
|
|
name: string;
|
|
screen_name: string;
|
|
}
|
|
export interface SymbolEntity {
|
|
indices: [number, number];
|
|
text: string;
|
|
}
|
|
export interface PollOptions {
|
|
position: number;
|
|
text: string;
|
|
}
|
|
export interface PollEntity {
|
|
options: PollOptions[];
|
|
end_datetime: string;
|
|
duration_minutes: string;
|
|
}
|
|
export interface Entities {
|
|
hashtags: HashtagEntity[];
|
|
media: MediaEntity[];
|
|
urls: UrlEntity[];
|
|
user_mentions: UserMentionEntity[];
|
|
symbols: SymbolEntity[];
|
|
polls: PollEntity[];
|
|
}
|
|
|
|
/**
|
|
* @see https://dev.twitter.com/overview/api/users
|
|
*/
|
|
export interface User {
|
|
contributors_enabled: boolean;
|
|
created_at: string;
|
|
default_profile: string;
|
|
default_profile_image: string;
|
|
description: string;
|
|
entities: Entities;
|
|
favourites_count: number;
|
|
follow_request_sent?: boolean;
|
|
following?: boolean;
|
|
followers_count: number;
|
|
friends_count: number;
|
|
geo_enabled?: boolean;
|
|
id: number;
|
|
id_str: string;
|
|
is_translator?: boolean;
|
|
lang: string;
|
|
listed_count: number;
|
|
location: string;
|
|
name: string;
|
|
notifications?: boolean;
|
|
profile_background_color: string;
|
|
profile_background_image_url: string;
|
|
profile_background_image_url_https: string;
|
|
profile_background_tile: boolean;
|
|
profile_banner_url: string;
|
|
profile_image_url: string;
|
|
profile_image_url_https: string;
|
|
profile_link_color: string;
|
|
profile_sidebar_border_color: string;
|
|
profile_sidebar_fill_color: string;
|
|
profile_text_color: string;
|
|
profile_use_background_image: boolean;
|
|
protected: boolean;
|
|
screen_name: string;
|
|
show_all_inline_media: boolean;
|
|
status?: Status;
|
|
statuses_count: number;
|
|
time_zone?: string;
|
|
url: string;
|
|
utc_offset?: number;
|
|
verified: boolean;
|
|
withheld_in_countries: string;
|
|
withheld_scope: string;
|
|
}
|
|
|
|
/**
|
|
* @see https://dev.twitter.com/overview/api/places
|
|
*/
|
|
export interface PlaceAttribute {
|
|
street_address: string;
|
|
locality: string;
|
|
region: string;
|
|
iso3: string;
|
|
postal_code: string;
|
|
phone: string;
|
|
twitter: string;
|
|
url: string;
|
|
'app:id': string;
|
|
}
|
|
export interface Place {
|
|
geometry: GeoJSON.Point;
|
|
attributes: PlaceAttribute;
|
|
bounding_box: GeoJSON.Polygon;
|
|
contained_within: Place[];
|
|
country: string;
|
|
country_code: string;
|
|
full_name: string;
|
|
id: string;
|
|
name: string;
|
|
place_type: string;
|
|
url: string;
|
|
}
|
|
|
|
/**
|
|
* @see https://dev.twitter.com/overview/api/tweets
|
|
*/
|
|
export interface Status {
|
|
id: number;
|
|
id_str: string;
|
|
annotations?: Object;
|
|
contributors?: Contributors[];
|
|
coordinates?: GeoJSON.Point;
|
|
created_at: string;
|
|
current_user_retweet?: {
|
|
id: number;
|
|
id_str: string;
|
|
};
|
|
display_text_range?: [number, number];
|
|
entities: Entities;
|
|
favorite_count?: number;
|
|
favorited?: boolean;
|
|
filter_level: 'none' | 'low' | 'medium';
|
|
full_text?: string;
|
|
in_reply_to_screen_name?: string;
|
|
in_reply_to_status_id?: number;
|
|
in_reply_to_status_id_str?: string;
|
|
in_reply_to_user_id?: number;
|
|
in_reply_to_user_id_str?: string;
|
|
is_quote_status: string;
|
|
lang?: string;
|
|
matching_rules?: MatchingRules[];
|
|
place?: Place;
|
|
possibly_sensitive?: boolean;
|
|
quoted_status_id?: number;
|
|
quoted_status_id_str?: string;
|
|
quoted_status?: Status;
|
|
retweet_count: number;
|
|
retweeted: boolean;
|
|
retweeted_status?: Status;
|
|
scopes?: Object;
|
|
source?: string;
|
|
text?: string;
|
|
truncated: boolean;
|
|
user: User;
|
|
withheld_copyright?: boolean;
|
|
withheld_in_countries?: string[];
|
|
withheld_scope?: string;
|
|
}
|
|
export interface Metadata {
|
|
max_id?: number;
|
|
since_id?: number;
|
|
refresh_url?: string;
|
|
next_results?: string;
|
|
count?: number;
|
|
completed_in?: number;
|
|
since_id_str?: string;
|
|
query?: string;
|
|
max_id_str?: string;
|
|
}
|
|
|
|
export interface Errors {
|
|
errors: {
|
|
code: number;
|
|
message: string;
|
|
}[];
|
|
}
|
|
|
|
export interface SearchResults {
|
|
statuses: Twitter.Status[];
|
|
search_metadata: Twitter.Metadata;
|
|
}
|
|
}
|
|
|
|
export type Response = object;
|
|
|
|
interface MediaParam {
|
|
file_path: string;
|
|
}
|
|
interface Params {
|
|
// search/tweets
|
|
q?: string;
|
|
geocode?: string;
|
|
lang?: string;
|
|
locale?: string;
|
|
result_type?: Twitter.ResultType;
|
|
count?: number;
|
|
results_per_page?: number;
|
|
until?: string;
|
|
since_id?: string;
|
|
max_id?: string;
|
|
include_entities?: boolean;
|
|
|
|
source_id?: number;
|
|
source_screen_name?: string;
|
|
target_id?: number;
|
|
target_screen_name?: string;
|
|
|
|
// Other params from various endpoints
|
|
track?: string | string[];
|
|
media_id?: string;
|
|
media_ids?: string[];
|
|
alt_text?: {
|
|
text?: string;
|
|
};
|
|
media_data?: Buffer | string;
|
|
screen_name?: string;
|
|
id?: string;
|
|
slug?: string;
|
|
owner_screen_name?: string;
|
|
status?: string;
|
|
user_id?: number | string;
|
|
lat?: number;
|
|
long?: number;
|
|
follow?: boolean | string | string[];
|
|
include_email?: boolean;
|
|
cursor?: number | string;
|
|
tweet_mode?: string;
|
|
trim_user?: boolean;
|
|
exclude_replies?: boolean;
|
|
include_rts?: boolean;
|
|
skip_status?: boolean;
|
|
url?: string;
|
|
include_user_entities?: boolean;
|
|
stringify_ids?: boolean;
|
|
in_reply_to_status_id?: number | string;
|
|
page?: number;
|
|
auto_populate_reply_metadata?: boolean;
|
|
list_id?: number | string;
|
|
name?: string;
|
|
description?: string;
|
|
mode?: 'public' | 'private';
|
|
exclude_reply_user_ids?: string | string[];
|
|
attachment_url?: string;
|
|
place_id?: string;
|
|
display_coordinates?: boolean;
|
|
enable_dmcommands?: boolean;
|
|
fail_dmcommands?: boolean;
|
|
card_uri?: string;
|
|
}
|
|
export interface PromiseResponse {
|
|
data: Response;
|
|
resp: IncomingMessage;
|
|
}
|
|
export interface Callback {
|
|
(err: Error, result: Response, response: IncomingMessage): void;
|
|
}
|
|
export interface ConfigKeys {
|
|
consumer_key: string;
|
|
consumer_secret: string;
|
|
access_token?: string;
|
|
access_token_secret?: string;
|
|
}
|
|
export interface Options extends ConfigKeys {
|
|
app_only_auth?: boolean;
|
|
timeout_ms?: number;
|
|
trusted_cert_fingerprints?: string[];
|
|
strictSSL?: boolean;
|
|
}
|
|
export interface Stream extends EventEmitter {
|
|
start(): void;
|
|
stop(): void;
|
|
}
|
|
}
|
|
|
|
class Twit {
|
|
/**
|
|
* @see https://github.com/ttezel/twit#var-t--new-twitconfig
|
|
*/
|
|
constructor(config: Twit.Options);
|
|
|
|
/**
|
|
* @see https://github.com/ttezel/twit#tgetpath-params-callback
|
|
*/
|
|
get(path: string, callback: Twit.Callback): void;
|
|
get(path: string, params: Twit.Params, callback: Twit.Callback): void;
|
|
get(path: string, params?: Twit.Params): Promise<Twit.PromiseResponse>;
|
|
|
|
/**
|
|
* @see https://github.com/ttezel/twit#tpostpath-params-callback
|
|
*/
|
|
post(path: string, callback: Twit.Callback): void;
|
|
post(path: string, params: Twit.Params, callback: Twit.Callback): void;
|
|
post(path: string, params?: Twit.Params): Promise<Twit.PromiseResponse>;
|
|
|
|
/**
|
|
* @see https://github.com/ttezel/twit#tpostmediachunkedparams-callback
|
|
*/
|
|
postMediaChunked(media: Twit.MediaParam, callback: Twit.Callback): void;
|
|
|
|
/**
|
|
* @see https://github.com/ttezel/twit#tgetauth
|
|
*/
|
|
getAuth(): Twit.Options;
|
|
|
|
/**
|
|
* @see https://github.com/ttezel/twit#tsetauthtokens
|
|
*/
|
|
setAuth(tokens: Twit.ConfigKeys): void;
|
|
|
|
/**
|
|
* @see https://github.com/ttezel/twit#tstreampath-params
|
|
*/
|
|
stream(path: Twit.StreamEndpoint, params?: Twit.Params): Twit.Stream;
|
|
}
|
|
|
|
export = Twit;
|
|
}
|