@nu-art/thunder
Version:
Thunder - React & Typescript based frontend framework
60 lines (59 loc) • 2.48 kB
TypeScript
import { ApiTypeBinder, DeriveBodyType, DeriveErrorType, DeriveQueryType, DeriveResponseType, DeriveUrlType, ErrorResponse, HttpMethod, QueryParams } from "@nu-art/ts-common";
import { RequestErrorHandler } from "./http-module";
export declare class HttpException extends Error {
constructor(responseCode: number, url: string);
}
export declare class HttpRequest<Binder extends ApiTypeBinder<U, R, B, P>, U extends string = DeriveUrlType<Binder>, R = DeriveResponseType<Binder>, B = DeriveBodyType<Binder>, P extends QueryParams = DeriveQueryType<Binder>, E extends void | object = DeriveErrorType<Binder>> {
private readonly requestKey;
private readonly requestData;
private origin;
private headers;
private method;
private timeout;
private body;
private url;
private params;
private onProgressListener;
xhr: XMLHttpRequest;
private label;
private errorMessage;
private successMessage;
private onResponseListener;
private handleRequestSuccess;
private handleRequestFailure;
private aborted;
private compress;
constructor(requestKey: string, requestData?: string);
setOrigin(origin: string): this;
setOnError(errorMessage: string | RequestErrorHandler<E>): this;
setOnSuccessMessage(successMessage: string): this;
setOnResponseListener(listener: (response: R) => void): this;
setLabel(label: string): this;
setMethod(method: HttpMethod): 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;
setOnProgressListener(onProgressListener: (ev: ProgressEvent) => void): this;
setHeaders(headers: {
[s: string]: string | string[];
}): 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;
private _addHeaderImpl;
setJsonBody(bodyObject: B, compress?: boolean): this;
setBody(bodyAsString: BodyInit, compress?: boolean): this;
asJson(): R;
asText(): R;
private resolveResponse;
execute(responseHandler?: (response: R) => Promise<void> | void): this;
getErrorResponse(): ErrorResponse<E>;
executeSync(): Promise<R>;
abort(): void;
private executeImpl;
}