@intuitionrobotics/thunderstorm
Version:
81 lines (80 loc) • 3.57 kB
TypeScript
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 {};