///
import * as http from 'http';
import * as https from 'https';
import { HttpClientResponse } from './index';
export interface HttpClient {
options(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
get(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
del(requestUrl: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
post(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
patch(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
put(requestUrl: string, data: string, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: http.OutgoingHttpHeaders): Promise;
request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: http.OutgoingHttpHeaders): Promise;
requestRaw(info: RequestInfo, data: string | NodeJS.ReadableStream): Promise;
requestRawWithCallback(info: RequestInfo, data: string | NodeJS.ReadableStream, onResult: (err?: Error, res?: HttpClientResponse) => void): void;
}
export interface RequestHandler {
prepareRequest(options: http.RequestOptions): void;
canHandleAuthentication(response: HttpClientResponse): boolean;
handleAuthentication(httpClient: HttpClient, requestInfo: RequestInfo, data: string | NodeJS.ReadableStream | null): Promise;
}
export interface RequestInfo {
options: http.RequestOptions;
parsedUrl: URL;
httpModule: typeof http | typeof https;
}
export interface RequestOptions {
headers?: http.OutgoingHttpHeaders;
socketTimeout?: number;
ignoreSslError?: boolean;
allowRedirects?: boolean;
allowRedirectDowngrade?: boolean;
maxRedirects?: number;
maxSockets?: number;
keepAlive?: boolean;
deserializeDates?: boolean;
allowRetries?: boolean;
maxRetries?: number;
}
export interface TypedResponse {
statusCode: number;
result: T | null;
headers: http.IncomingHttpHeaders;
}