import { HttpStatusCode } from './status-code.enum'; import { ILaqusLogger } from '../logging/logger.interface'; export declare enum HttpMethod { GET = "GET", DELETE = "DELETE", POST = "POST", PUT = "PUT", PATCH = "PATCH" } export declare enum HttpResponseType { ARRAY_BUFFER = "arraybuffer", BLOB = "blob", DOCUMENT = "document", JSON = "json", TEXT = "text", STREAM = "stream" } export declare enum HttpResponseEncoding { ASCII = "ASCII", ANSI = "ANSI", BINARY = "BINARY", BASE64 = "BASE64", LATIN1 = "LATIN1", UTF8 = "UTF-8", UTF16LE = "UTF16LE" } export interface IRequestBasicCredentials { username: string; password: string; } export interface IRequestProxyConfig { host: string; port: number; auth?: IRequestBasicCredentials; protocol?: string; } export interface IHttpRequestOptions { urlQueryParams?: { key: string; val: string; }[]; headers?: IRequestHeader[]; correlationId: string; reponseEncoding?: HttpResponseEncoding; responseType?: HttpResponseType; basicAuthCredentials?: IRequestBasicCredentials; proxyConfig?: IRequestProxyConfig; timeoutMillis?: number; /** * @abstract Caso esta requisição use Bearer JWT, informa o token e adiciona automaticmente aos headers */ bearerToken?: string; } export interface IRequestHeader { key: string; value: string; } export interface IHttpRequestResult { success: boolean; statusCode: HttpStatusCode | number; status: string; } export interface IRequestResponse extends IHttpRequestResult { data: T | null; } export interface RequestErrorDetails { message?: string; cause?: string; /** Se o erro foi lá no client nativo ou no da laqus */ isUnderlyingHttpClientError?: boolean; } export interface IHttpRequestInfo { method: HttpMethod; url: string; payload?: string; options?: IHttpRequestOptions; } export interface IRequestErrorResponse extends IHttpRequestResult { data: T | null; error: RequestErrorDetails; errorAsJson?: any; requestInfo: IHttpRequestInfo; } export interface ILaqusHttpClient { get(url: string, config?: IHttpRequestOptions): Promise>; post(url: string, body: any, config?: IHttpRequestOptions): Promise>; put(url: string, body: any, config?: IHttpRequestOptions): Promise>; patch(url: string, body: any, config?: IHttpRequestOptions): Promise>; delete(url: string, config?: IHttpRequestOptions): Promise; setLogger(logger: ILaqusLogger, context?: string): void; }