/// import http = require('http'); export interface IHeaders { [key: string]: any; } export interface IHttpClient { options(requestUrl: string, additionalHeaders?: IHeaders): Promise; get(requestUrl: string, additionalHeaders?: IHeaders): Promise; del(requestUrl: string, additionalHeaders?: IHeaders): Promise; post(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; patch(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; put(requestUrl: string, data: string, additionalHeaders?: IHeaders): Promise; sendStream(verb: string, requestUrl: string, stream: NodeJS.ReadableStream, additionalHeaders?: IHeaders): Promise; request(verb: string, requestUrl: string, data: string | NodeJS.ReadableStream, headers: IHeaders): Promise; requestRaw(info: IRequestInfo, data: string | NodeJS.ReadableStream): Promise; requestRawWithCallback(info: IRequestInfo, data: string | NodeJS.ReadableStream, onResult: (err: any, res: IHttpClientResponse) => void): void; } export interface IRequestHandler { prepareRequest(options: http.RequestOptions): void; canHandleAuthentication(response: IHttpClientResponse): boolean; handleAuthentication(httpClient: IHttpClient, requestInfo: IRequestInfo, objs: any): Promise; } export interface IHttpClientResponse { message: http.IncomingMessage; readBody(): Promise; } export interface IRequestInfo { options: http.RequestOptions; parsedUrl: URL; httpModule: any; } export interface IRequestOptions { headers?: IHeaders; socketTimeout?: number; ignoreSslError?: boolean; allowRedirects?: boolean; allowRedirectDowngrade?: boolean; maxRedirects?: number; maxSockets?: number; keepAlive?: boolean; deserializeDates?: boolean; allowRetries?: boolean; maxRetries?: number; } export interface ITypedResponse { statusCode: number; result: T | null; headers: Object; }