naga-audit-service
Version:
A comprehensive audit service library for NestJS applications with MongoDB support
73 lines • 2.4 kB
JavaScript
;
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