///
import * as O from 'fp-ts/lib/Option';
import * as TE from 'fp-ts/lib/TaskEither';
import { Readable } from 'stream';
import { File, FileStorage } from '../file/File';
import { SerializationFormat } from '../serialization/Serialization';
import { DynamicObject } from '../dynamictype/DynamicType';
export type HttpHeaderValue = string | string[];
export type HttpHeaders = Record;
export type HttpQueryStringSingleValue = number | string | boolean;
export type HttpQueryStringValue = HttpQueryStringSingleValue | HttpQueryStringSingleValue[];
export type HttpQueryString = Record;
export type RegularHttpRequestBody = ArrayBuffer;
export type MultipartHttpRequestBody = {
fields: Record;
files: Record;
};
export type StreamHttpRequestBody = Readable;
export interface MultipartHttpRequestBodyInterface {
create: (value: unknown, fileStorage: FileStorage) => TE.TaskEither;
}
export declare const MultipartHttpRequestBody: {
create: (value: unknown, fileStorage: FileStorage) => TE.TaskEither;
};
export type HttpRequestBody = RegularHttpRequestBody | MultipartHttpRequestBody | StreamHttpRequestBody;
export type HttpCertificate = {
cert: string;
key: string;
};
export type HttpAgent = {
certificate: O.Option;
};
export type HeaderOptions = {
preserveHeaderCasing: O.Option;
};
export type HttpRequest = {
headers: HttpHeaders;
headerOptions: O.Option;
pathParams: Record;
queryString: HttpQueryString;
body: HttpRequestBody;
agent: O.Option;
clientIp: O.Option;
timeout?: O.Option;
};
export type HttpResponse = {
statusCode: number;
headers: HttpHeaders;
body: Readable;
};
export declare enum HttpMethod {
Delete = "DELETE",
Get = "GET",
Head = "HEAD",
Options = "OPTIONS",
Patch = "PATCH",
Post = "POST",
Put = "PUT"
}
export declare enum HttpContentType {
Json = "application/json",
OctetStream = "application/octet-stream",
FormUrlEncoded = "application/x-www-form-urlencoded",
MultipartRequestBody = "multipart/form-data",
Text = "text/plain"
}
export declare enum HttpHeader {
Authorization = "Authorization",
ContentType = "Content-Type",
Impersonation = "X-Tray-Admin-Impersonate",
UserAgent = "User-Agent",
ContentLength = "Content-Length",
ContentDisposition = "Content-Disposition",
Host = "Host",
HostOverride = "X-Host-Override"
}
export interface HttpRequestInterface {
create: (httpRequest: Partial) => HttpRequest;
}
export declare const HttpRequest: HttpRequestInterface;
export interface HttpHeadersInterface {
get: (headers: HttpHeaders, name: string) => O.Option;
extractBearerToken: (headers: HttpHeaders) => O.Option;
fromDynamicObject: (headers: DynamicObject) => HttpHeaders;
toDynamicObject: (headers: HttpHeaders) => DynamicObject;
}
export declare const HttpHeaders: HttpHeadersInterface;
export declare const serializationFormatToHttpContentType: Record;
export declare const isMultiPartBody: (body: HttpRequestBody) => body is MultipartHttpRequestBody;
//# sourceMappingURL=Http.d.ts.map