http-summoner
Version:
Http service
89 lines (88 loc) • 2.29 kB
TypeScript
export declare enum REQUEST_METHODS {
GET = "GET",
POST = "POST",
PATCH = "PATCH",
DELETE = "DELETE"
}
export interface AnyObject {
[name: string]: string;
}
export interface InitialConfig {
baseUrl: string;
headers: AnyObject;
timeout: number;
lsHeaders: string[];
}
export interface HttpSummonerCreateProps {
baseUrl: string;
headers?: AnyObject;
timeout?: number;
lsHeaders: string[];
}
export interface RequestConfig {
method: REQUEST_METHODS;
url?: string;
headers?: AnyObject;
query?: AnyObject;
timeout?: number;
body?: AnyObject;
}
export interface FinalConfig {
method: REQUEST_METHODS;
url: string;
headers: AnyObject;
timeout: number;
body: AnyObject;
}
export interface GetRequestConfig {
headers?: AnyObject;
query?: AnyObject;
timeout?: number;
}
export interface PostRequestConfig extends GetRequestConfig {
body?: AnyObject;
}
export interface PatchRequestConfig extends PostRequestConfig {
}
export interface DeleteRequestConfig extends GetRequestConfig {
}
export interface GetRequest {
(url: string): void;
(url: string, config: GetRequestConfig): void;
}
export interface PostRequest {
(url: string): void;
(url: string, config: PostRequestConfig): void;
}
export interface PatchRequest {
(url: string): void;
(url: string, config: PatchRequestConfig): void;
}
export interface DeleteRequest {
(url: string): void;
(url: string, config: DeleteRequestConfig): void;
}
export interface SuccessResponse<T> {
ok: boolean;
status: number;
statusText: string;
headers: object | string;
data: T;
}
export interface ErrorResponse<U> extends SuccessResponse<U> {
message: string;
}
export interface BeforeInterceptor {
(finalConfig: FinalConfig): void;
}
export interface AfterInterceptor {
(requestResult: SuccessResponse<any>): void;
}
export interface IHttpSummoner {
setBeforeRequestInterceptor: (interceptor: BeforeInterceptor) => void;
setAfterRequestInterceptor: (interceptor: AfterInterceptor) => void;
get: GetRequest;
post: PostRequest;
patch: PatchRequest;
delete: DeleteRequest;
}