@rocket.chat/apps-engine
Version:
The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.
186 lines (185 loc) • 6.76 kB
TypeScript
import type { IPersistence } from './IPersistence';
import type { IRead } from './IRead';
/**
* The Http package allows users to call out to an external web service.
* Based off of: https://github.com/meteor-typings/meteor/blob/master/1.4/main.d.ts#L869
*/
export interface IHttp {
get(url: string, options?: IHttpRequest): Promise<IHttpResponse>;
post(url: string, options?: IHttpRequest): Promise<IHttpResponse>;
put(url: string, options?: IHttpRequest): Promise<IHttpResponse>;
del(url: string, options?: IHttpRequest): Promise<IHttpResponse>;
patch(url: string, options?: IHttpRequest): Promise<IHttpResponse>;
}
export declare enum RequestMethod {
GET = "get",
POST = "post",
PUT = "put",
DELETE = "delete",
HEAD = "head",
OPTIONS = "options",
PATCH = "patch"
}
export interface IHttpRequest {
content?: string;
data?: any;
query?: string;
params?: {
[key: string]: string;
};
auth?: string;
headers?: {
[key: string]: string;
};
timeout?: number;
/**
* The encoding to be used on response data.
*
* If null, the body is returned as a Buffer. Anything else (including the default value of undefined)
* will be passed as the encoding parameter to toString() (meaning this is effectively 'utf8' by default).
* (Note: if you expect binary data, you should set encoding: null.)
*/
encoding?: string | null;
/**
* if `true`, requires SSL certificates be valid.
*
* Defaul: `true`;
*/
strictSSL?: boolean;
/**
* If `true`, the server certificate is verified against the list of supplied CAs.
*
* Default: `true`.
*
* https://nodejs.org/api/tls.html#tls_tls_connect_options_callback
*/
rejectUnauthorized?: boolean;
}
export interface IHttpResponse {
url: string;
method: RequestMethod;
statusCode: number;
headers?: {
[key: string]: string;
};
content?: string;
data?: any;
}
export interface IHttpExtend {
/**
* A method for providing a single header which is added to every request.
*
* @param key the name of the header
* @param value the header's content
*/
provideDefaultHeader(key: string, value: string): void;
/**
* A method for providing more than one header which are added to every request.
*
* @param headers an object with strings as the keys (header name) and strings as values (header content)
*/
provideDefaultHeaders(headers: {
[key: string]: string;
}): void;
/**
* A method for providing a single query parameter which is added to every request.
*
* @param key the name of the query parameter
* @param value the query parameter's content
*/
provideDefaultParam(key: string, value: string): void;
/**
* A method for providing more than one query parameters which are added to every request.
*
* @param headers an object with strings as the keys (parameter name) and strings as values (parameter content)
*/
provideDefaultParams(params: {
[key: string]: string;
}): void;
/**
* Method for providing a function which is called before every request is called out to the final destination.
* This can be called more than once which means there can be more than one handler. The order provided is the order called.
* Note: if this handler throws an error when it is executed then the request will be aborted.
*
* @param handler the instance of the IHttpPreRequestHandler
*/
providePreRequestHandler(handler: IHttpPreRequestHandler): void;
/**
* Method for providing a function which is called after every response is got from the url and before the result is returned.
* This can be called more than once which means there can be more than one handler. The order provided is the order called.
* Note: if this handler throws an error when it is executed then the respone will not be returned
*
* @param handler the instance of the IHttpPreResponseHandler
*/
providePreResponseHandler(handler: IHttpPreResponseHandler): void;
/**
* A method for getting all of the default headers provided, the value is a readonly and any modifications done will be ignored.
* Please use the provider methods for adding them.
*/
getDefaultHeaders(): Map<string, string>;
/**
* A method for getting all of the default parameters provided, the value is a readonly and any modifications done will be ignored.
* Please use the provider methods for adding them.
*/
getDefaultParams(): Map<string, string>;
/**
* A method for getting all of the pre-request handlers provided, the value is a readonly and any modifications done will be ignored.
* Please use the provider methods for adding them.
*/
getPreRequestHandlers(): Array<IHttpPreRequestHandler>;
/**
* A method for getting all of the pre-response handlers provided, the value is a readonly and any modifications done will be ignored.
* Please use the provider methods for adding them.
*/
getPreResponseHandlers(): Array<IHttpPreResponseHandler>;
}
export interface IHttpPreRequestHandler {
executePreHttpRequest(url: string, request: IHttpRequest, read: IRead, persistence: IPersistence): Promise<IHttpRequest>;
}
export interface IHttpPreResponseHandler {
executePreHttpResponse(response: IHttpResponse, read: IRead, persistence: IPersistence): Promise<IHttpResponse>;
}
export declare enum HttpStatusCode {
CONTINUE = 100,
SWITCHING_PROTOCOLS = 101,
OK = 200,
CREATED = 201,
ACCEPTED = 202,
NON_AUTHORITATIVE_INFORMATION = 203,
NO_CONTENT = 204,
RESET_CONTENT = 205,
PARTIAL_CONTENT = 206,
MULTIPLE_CHOICES = 300,
MOVED_PERMANENTLY = 301,
FOUND = 302,
SEE_OTHER = 303,
NOT_MODIFIED = 304,
USE_PROXY = 305,
TEMPORARY_REDIRECT = 307,
BAD_REQUEST = 400,
UNAUTHORIZED = 401,
PAYMENT_REQUIRED = 402,
FORBIDDEN = 403,
NOT_FOUND = 404,
METHOD_NOT_ALLOWED = 405,
NOT_ACCEPTABLE = 406,
PROXY_AUTHENTICATION_REQUIRED = 407,
REQUEST_TIMEOUT = 408,
CONFLICT = 409,
GONE = 410,
LENGTH_REQUIRED = 411,
PRECONDITION_FAILED = 412,
REQUEST_ENTITY_TOO_LARGE = 413,
REQUEST_URI_TOO_LONG = 414,
UNSUPPORTED_MEDIA_TYPE = 415,
REQUESTED_RANGE_NOT_SATISFIABLE = 416,
EXPECTATION_FAILED = 417,
UNPROCESSABLE_ENTITY = 422,
TOO_MANY_REQUESTS = 429,
INTERNAL_SERVER_ERROR = 500,
NOT_IMPLEMENTED = 501,
BAD_GATEWAY = 502,
SERVICE_UNAVAILABLE = 503,
GATEWAY_TIMEOUT = 504,
HTTP_VERSION_NOT_SUPPORTED = 505
}