///
///
///
import { ClientRequest, IncomingMessage, RequestOptions } from 'http';
type Primitive = string | number | boolean | null | undefined;
interface HttpClient {
request: (options: string | URL | RequestOptions, callback?: (res: IncomingMessage) => void) => ClientRequest;
}
export interface OnChunkData {
percentComplete: number;
chunk: Buffer;
}
export interface ClientResponse {
statusCode: number;
message: string;
data: Buffer | null;
}
export interface RequestParams {
url: string;
headers?: Record;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
data?: string | Record;
timeout?: number;
onError?: (err: Error) => void;
onChunk?: (data: OnChunkData) => void;
onResponse?: (response: IncomingMessage) => void;
onSuccess?: (response: ClientResponse) => void;
resolveData?: boolean;
}
export interface ClientArgs {
httpClient?: HttpClient;
defaultHeaders?: Record;
}
export interface IClient {
request(params: RequestParams): Promise;
setDefaultHeaders?(headers: Record): void;
setUserAgent?(userAgent: string): void;
}
export default class Client implements IClient {
private readonly httpClient;
private defaultHeaders;
constructor(args?: ClientArgs);
setDefaultHeaders(headers: Record): void;
setUserAgent(userAgent: string): void;
request(params: RequestParams): Promise;
}
export {};