fiscalapi
Version:
SDK de Node.js para FiscalAPI
114 lines (113 loc) • 5.54 kB
TypeScript
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>>;
}