/// /// /// 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; }