powr-sdk-api
Version:
Shared API core library for PowrStack projects
53 lines (49 loc) • 1.34 kB
JavaScript
;
const logger = require('../services/logger');
const responseFormatter = (req, res, next) => {
// Add success method to response object
res.success = function (message = 'Success', statusCode = 200, data = null) {
const response = {
success: true,
message
};
// Only include data if it's not null
if (data !== null) {
response.data = data;
}
return this.status(statusCode).json(response);
};
// Add error method to response object
res.error = function (message = 'Error', statusCode = 500, error = null) {
const response = {
success: false,
message
};
// Only include details if they're not null
if (error !== null) {
response.error = error;
}
return this.status(statusCode).json(response);
};
next();
};
const responseLogger = (req, res, next) => {
const startTime = Date.now();
res.on('finish', () => {
const responseTime = Date.now() - startTime;
logger.info('API Response', {
method: req.method,
url: req.originalUrl,
statusCode: res.statusCode,
responseTime: `${responseTime}ms`,
userAgent: req.get('user-agent'),
ip: req.ip,
response: res.locals.responseBody || '[not captured]'
});
});
next();
};
module.exports = {
responseFormatter,
responseLogger
};