1
0
Fork 0
toolkit/packages/http-client/src/interfaces.ts

92 lines
2.4 KiB
TypeScript

import * as http from 'http'
import * as https from 'https'
import {HttpClientResponse} from './index'
export interface HttpClient {
options(
requestUrl: string,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
get(
requestUrl: string,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
del(
requestUrl: string,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
post(
requestUrl: string,
data: string,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
patch(
requestUrl: string,
data: string,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
put(
requestUrl: string,
data: string,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
sendStream(
verb: string,
requestUrl: string,
stream: NodeJS.ReadableStream,
additionalHeaders?: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
request(
verb: string,
requestUrl: string,
data: string | NodeJS.ReadableStream,
headers: http.OutgoingHttpHeaders
): Promise<HttpClientResponse>
requestRaw(
info: RequestInfo,
data: string | NodeJS.ReadableStream
): Promise<HttpClientResponse>
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<HttpClientResponse>
}
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
// Allows retries only on Read operations (since writes may not be idempotent)
allowRetries?: boolean
maxRetries?: number
}
export interface TypedResponse<T> {
statusCode: number
result: T | null
headers: http.IncomingHttpHeaders
}