import { AxiosInstance, AxiosRequestConfig } from 'axios'; import { IHttpRequestHandler, IRequestData, IRequestResponse, InterceptorCallback, ErrorHandlingStrategy, RequestHandlerConfig } from './types/http-request-handler'; /** * Generic Request Handler * It creates an Axios instance and handles requests within that instance * It handles errors depending on a chosen error handling strategy */ export declare class HttpRequestHandler implements IHttpRequestHandler { /** * @var requestInstance Provider's instance * * @memberof HttpRequestHandler */ requestInstance: AxiosInstance; /** * @var timeout Request timeout * * @memberof HttpRequestHandler */ timeout: number; /** * @var strategy Request timeout * * @memberof HttpRequestHandler */ strategy: ErrorHandlingStrategy; /** * @var flattenResponse Response flattening * * @memberof HttpRequestHandler */ flattenResponse: boolean; /** * @var logger Logger * * @memberof HttpRequestHandler */ protected logger: any; /** * @var httpRequestErrorService HTTP error service * * @memberof HttpRequestHandler */ protected httpRequestErrorService: any; /** * Creates an instance of HttpRequestHandler * * @param {string} baseURL Base URL for all API calls * @param {number} timeout Request timeout * @param {string} strategy Error Handling Strategy * @param {string} flattenResponse Whether to flatten response "data" object within "data" one * @param {*} logger Instance of Logger Class * @param {*} httpRequestErrorService Instance of Error Service Class * * @memberof HttpRequestHandler */ constructor({ baseURL, timeout, strategy, flattenResponse, logger, httpRequestErrorService, ...config }: RequestHandlerConfig); /** * Get Provider Instance * * @returns {AxiosInstance} Provider's instance * @memberof HttpRequestHandler */ getInstance(): AxiosInstance; /** * Intercept Request * * @param {*} callback callback to use before request * @returns {void} * @memberof HttpRequestHandler */ interceptRequest(callback: InterceptorCallback): void; /** * POST Request * * @param {string} url Url * @param {*} data Payload * @param {AxiosRequestConfig} config Config * @throws {Error} If request fails * @returns {Promise} Request response or error info * @memberof HttpRequestHandler */ post(url: string, data?: any, config?: AxiosRequestConfig): Promise; /** * GET Request * * @param {string} url Url * @param {*} data Payload * @param {AxiosRequestConfig} config Config * @throws {Error} If request fails * @returns {Promise} Request response or error info * @memberof HttpRequestHandler */ get(url: string, data?: any, config?: AxiosRequestConfig): Promise; /** * PUT Request * * @param {string} url Url * @param {*} data Payload * @param {AxiosRequestConfig} config Config * @throws {Error} If request fails * @returns {Promise} Request response or error info * @memberof HttpRequestHandler */ put(url: string, data?: any, config?: AxiosRequestConfig): Promise; /** * DELETE Request * * @param {string} url Url * @param {*} data Payload * @param {AxiosRequestConfig} config Config * @throws {Error} If request fails * @returns {Promise} Request response or error info * @memberof HttpRequestHandler */ delete(url: string, data?: any, config?: AxiosRequestConfig): Promise; /** * PATCH Request * * @param {string} url Url * @param {*} data Payload * @param {AxiosRequestConfig} config Config * @throws {Error} If request fails * @returns {Promise} Request response or error info * @memberof HttpRequestHandler */ patch(url: string, data?: any, config?: AxiosRequestConfig): Promise; /** * HEAD Request * * @param {string} url Url * @param {*} data Payload * @param {AxiosRequestConfig} config Config * @throws {Error} If request fails * @returns {Promise} Request response or error info * @memberof HttpRequestHandler */ head(url: string, data?: any, config?: AxiosRequestConfig): Promise; /** * Get Provider Instance * * @param {Error} err Error instance * @returns {AxiosInstance} Provider's instance * @memberof HttpRequestHandler */ protected processRequestError(err: Error): void; /** * Handle Request depending on used strategy * * @param {object} payload Payload * @param {string} payload.type Request type * @param {string} payload.url Request url * @param {*} payload.data Request data * @param {AxiosRequestConfig} payload.config Config to modify request * @throws {Error} * @returns {Promise} Response Data * @memberof HttpRequestHandler */ protected handleRequest({ type, url, data, config, }: IRequestData): Promise; protected processResponseData(response: any): any; }