UNPKG

naga-audit-service

Version:

A comprehensive audit service library for NestJS applications with MongoDB support

73 lines 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.interServiceRequestHelper = interServiceRequestHelper; const common_1 = require("@nestjs/common"); const axios_1 = require("axios"); function logRequest(config) { console.log('Starting Request', config); } function logResponse(response) { console.log('Response:', response); } function logError(error) { console.error('Error:', error); } async function retryRequest(requestFn, retries, retryDelay) { let attempt = 0; while (attempt < retries) { try { return await requestFn(); } catch (error) { attempt++; if (attempt < retries) { await new Promise((resolve) => setTimeout(resolve, retryDelay)); } else { throw error; } } } } const axiosInstance = axios_1.default.create({ timeout: 10000, }); axiosInstance.interceptors.request.use((config) => { logRequest(config); return config; }, (error) => { logError(error); return Promise.reject(error); }); axiosInstance.interceptors.response.use((response) => { logResponse(response); return response; }, (error) => { logError(error); return Promise.reject(error); }); async function interServiceRequestHelper({ method = 'get', service, requestPath, headers = {}, query = {}, body = {}, timeout, retries = 3, retryDelay = 1000, configService, }) { const serviceUrlEnvVar = service.toUpperCase().replace(/-/g, '_') + '_URL'; const serviceUrl = configService ? configService.get(serviceUrlEnvVar) : process.env[serviceUrlEnvVar]; if (!serviceUrl) { throw new common_1.BadRequestException(`Service URL for "${service}" is not defined in configuration. Please set ${serviceUrlEnvVar}`); } const fullUrl = `${serviceUrl}/${requestPath.startsWith('/') ? requestPath.slice(1) : requestPath}`; const config = { method, url: fullUrl, headers, params: query, data: body, timeout, }; try { const apiResponse = await retryRequest(() => axiosInstance.request(config), retries, retryDelay); return apiResponse.data.data || apiResponse.data; } catch (error) { console.log('Error-occured', error); throw error; } } //# sourceMappingURL=axios-wrapper.js.map