UNPKG

@intuitionrobotics/thunderstorm

Version:
81 lines (80 loc) 3.57 kB
import { ApiTypeBinder, ErrorResponse, HttpMethod, QueryParams } from "./types"; import { RequestErrorHandler, RequestSuccessHandler, TS_Progress } from "./request-types"; type DefaultHeaders = { [s: string]: ((url: string) => string | string[]) | string | string[]; }; export declare abstract class BaseHttpRequest<Binder extends ApiTypeBinder<U, R, B, P, E>, U extends string = Binder["url"], R = Binder["response"], B = Binder["body"], P extends QueryParams = Binder["queryParams"], E extends void | object = Binder["error"]> { key: string; requestData: string | undefined; errorMessage: string; successMessage: string; protected origin?: string; protected headers: { [s: string]: string[]; }; protected method: HttpMethod; protected timeout: number; protected body: B; protected url: string; protected params?: P; protected responseType: string; private defaultHeaders; protected label: string; protected onProgressListener: (ev: TS_Progress) => void; protected handleRequestSuccess: RequestSuccessHandler; protected handleRequestFailure: RequestErrorHandler<E>; protected onError?: RequestErrorHandler<E>; protected aborted: boolean; protected compress: boolean; private defaultResponseHandler?; constructor(requestKey: string, requestData?: string); setHandleRequestSuccess(handleRequestSuccess: RequestSuccessHandler): this; setHandleRequestFailure(handleRequestFailure: RequestErrorHandler<E>): this; getErrorMessage(): string; getSuccessMessage(): string; getRequestData(): string | undefined; setOrigin(origin?: string): this; setOnError(errorMessage: string | RequestErrorHandler<E>): this; setOnSuccessMessage(successMessage: string): this; setOnProgressListener(onProgressListener: (ev: TS_Progress) => void): this; setDefaultRequestHandler(processDefaultResponseHandlers: (request: BaseHttpRequest<any>) => boolean): this; setLabel(label: string): this; setMethod(method: HttpMethod): this; setResponseType(responseType: string): this; setUrlParams(params: P): this; setUrlParam<K extends keyof P = keyof P>(key: K, value: P[K]): this; setUrl(url: string): this; setRelativeUrl(relativeUrl: U): this; setTimeout(timeout: number): this; setHeaders(headers: { [s: string]: string | string[]; }): this; setDefaultHeaders(headers: DefaultHeaders): this; addHeaders(headers: { [s: string]: string | string[]; }): this; setHeader(_key: string, value: string | string[]): this; addHeader(_key: string, value: string | string[]): this; removeHeader(key: string): this; protected _addHeaderImpl(key: string, value: string | string[]): this; setJsonBody(bodyObject: B, compress?: boolean): this; protected prepareJsonBody(bodyObject: B): any; setBody(bodyAsString: any, _compress?: boolean): this; asJson(): R; asText(): NonNullable<R>; protected resolveResponse(): R; private handleFailure; private isValidStatus; executeSync(): Promise<R>; execute(responseHandler?: (response: R, data?: string) => Promise<void> | void): this; getUrl: () => string; abstract getResponse(): R; abstract getErrorResponse(): ErrorResponse<E>; protected abstract abortImpl(): void; abstract getStatus(): number; abstract getResponseHeader(headerKey: string): string | undefined; abort(): void; protected abstract executeImpl(): Promise<void>; private addDefaultHeaders; } export {};