UNPKG

@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
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 }