UNPKG

fiscalapi

Version:

SDK de Node.js para FiscalAPI

114 lines (113 loc) 5.54 kB
import { AxiosInstance, AxiosRequestConfig } from 'axios'; import { FiscalapiSettings } from './../common/fiscalapi-settings'; import { IFiscalapiHttpClient, HttpMethod, RequestOptions } from './fiscalapi-http-client.interface'; import { ApiResponse } from '../common/api-response'; /** * Cliente HTTP para FiscalAPI */ export declare class FiscalapiHttpClient implements IFiscalapiHttpClient { private readonly httpClient; private readonly settings; /** * Crea una nueva instancia del cliente HTTP para FiscalAPI * @param {AxiosInstance} httpClient - Instancia de Axios configurada * @param {FiscalapiSettings} settings - Configuración para el cliente FiscalAPI */ constructor(httpClient: AxiosInstance, settings: FiscalapiSettings); /** * Configura los interceptores para logear las peticiones y respuestas en modo debug * @private */ private setupDebugInterceptors; /** * Logea los detalles de una petición HTTP cuando el modo debug está activado * @param {InternalAxiosRequestConfig} config - Configuración de la petición * @private */ private logRequest; /** * Logea los detalles de una respuesta HTTP cuando el modo debug está activado * @param {AxiosResponse} response - Respuesta de la petición * @private */ private logResponse; /** * Ejecuta una petición HTTP genérica con control completo sobre los parámetros * @param {HttpMethod} method - Método HTTP a utilizar * @param {string} endpoint - Punto final de la API * @param {RequestOptions<TData>} options - Opciones de la petición * @returns {Promise<ApiResponse<TResult>>} Respuesta de la API * @template TResult - Tipo de datos esperado en la respuesta * @template TData - Tipo de datos a enviar en la petición (opcional) */ executeRequest<TResult, TData = any>(method: HttpMethod, endpoint: string, options?: RequestOptions<TData>): Promise<ApiResponse<TResult>>; /** * Procesa la respuesta HTTP y la convierte en ApiResponse * @param {AxiosResponse} response - Respuesta HTTP original * @returns {ApiResponse<T>} Respuesta procesada * @template T - Tipo de datos esperado * @private */ private processResponse; /** * Maneja los errores de las peticiones HTTP * @param {unknown} error - Error capturado * @returns {ApiResponse<T>} Respuesta de error estandarizada * @template T - Tipo de datos esperado * @private */ private handleRequestError; /** * Realiza una petición GET a la API * @param {string} endpoint - Punto final de la API * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición * @returns {Promise<ApiResponse<T>>} Respuesta de la API * @template T - Tipo de datos esperado en la respuesta */ getAsync<T>(endpoint: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>; /** * Realiza una petición GET por ID a la API * @param {string} endpoint - Punto final de la API con ID * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición * @returns {Promise<ApiResponse<T>>} Respuesta de la API * @template T - Tipo de datos esperado en la respuesta */ getByIdAsync<T>(endpoint: string, config?: AxiosRequestConfig): Promise<ApiResponse<T>>; /** * Realiza una petición POST a la API * @param {string} endpoint - Punto final de la API * @param {TData} data - Datos a enviar en la petición * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición * @returns {Promise<ApiResponse<T>>} Respuesta de la API * @template T - Tipo de datos esperado en la respuesta * @template TData - Tipo de datos a enviar en la petición */ postAsync<T, TData = Record<string, unknown>>(endpoint: string, data: TData, config?: AxiosRequestConfig): Promise<ApiResponse<T>>; /** * Realiza una petición PUT a la API * @param {string} endpoint - Punto final de la API * @param {TData} data - Datos a enviar en la petición * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición * @returns {Promise<ApiResponse<T>>} Respuesta de la API * @template T - Tipo de datos esperado en la respuesta * @template TData - Tipo de datos a enviar en la petición */ putAsync<T, TData = Record<string, unknown>>(endpoint: string, data: TData, config?: AxiosRequestConfig): Promise<ApiResponse<T>>; /** * Realiza una petición DELETE a la API * @param {string} endpoint - Punto final de la API * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición * @returns {Promise<ApiResponse<boolean>>} Respuesta de la API */ deleteAsync(endpoint: string, config?: AxiosRequestConfig): Promise<ApiResponse<boolean>>; /** * Realiza una petición PATCH a la API * @param {string} endpoint - Punto final de la API * @param {TData} data - Datos a enviar en la petición * @param {AxiosRequestConfig} [config] - Configuración adicional para la petición * @returns {Promise<ApiResponse<T>>} Respuesta de la API * @template T - Tipo de datos esperado en la respuesta * @template TData - Tipo de datos a enviar en la petición */ patchAsync<T, TData = Record<string, unknown>>(endpoint: string, data: TData, config?: AxiosRequestConfig): Promise<ApiResponse<T>>; }