Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 0 additions & 45 deletions src/constants/common.js
Original file line number Diff line number Diff line change
@@ -1,61 +1,16 @@
const { elevateLog, correlationId } = require('elevate-logger')
const logger = elevateLog.init()
/**
* name : constants/common.js
* author : Aman Kumar Gupta
* Date : 29-Sep-2021
* Description : All commonly used constants through out the service
*/

/**
* Success response
* @method
* @name successResponse
* @param {String} statusCode status code of the response.
* @param {String} responseCode response code.
* @param {String} message response message.
* @param {String} result - result
* @returns {JSON} Returns response format
*/
const successResponse = ({ statusCode = 200, responseCode = 'OK', message, result = [], meta = {} }) => {
let response = {
statusCode,
responseCode,
message,
result,
meta: { ...meta, correlation: correlationId.getId() },
}

logger.info('Request Response', { response: response })

return response
}

/**
* failure response
* @method
* @name failureResponse
* @param {String} statusCode status code of the failure response.
* @param {String} responseCode response code.
* @param {String} message response message.
* @param {String} result - result
* @returns {JSON} Returns response error
*/
const failureResponse = ({ message = 'Oops! Something Went Wrong.', statusCode = 500, responseCode }) => {
const error = new Error(message)
error.statusCode = statusCode
error.responseCode = responseCode
return error
}

module.exports = {
pagination: {
DEFAULT_PAGE_NO: 1,
DEFAULT_PAGE_SIZE: 100,
},
accessTokenSecret: 'hsghasghjab1273JHajnbabsjdj1273981273jhajksdh8y3123yhjkah812398yhjqwe7617237yuhdhhdqwu271',
refreshTokenSecret: '371hkjkjady2y3ihdkajshdkiq23iuekw71yekhaskdvkvegavy23t78veqwexqvxveit6ttxyeeytt62tx236vv',
successResponse,
failureResponse,
guestUrls: [],
}
1 change: 0 additions & 1 deletion src/globalConfig.json

This file was deleted.

55 changes: 55 additions & 0 deletions src/helpers/responses.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/**
* name : helpers/responses.js
* author : Vishnu
* Date : 31-Jan-2024
* Description : API response used in the service
*/

const { elevateLog, correlationId } = require('elevate-logger')
const logger = elevateLog.init()

/**
* Success response
* @method
* @name successResponse
* @param {String} statusCode status code of the response.
* @param {String} responseCode response code.
* @param {String} message response message.
* @param {String} result - result
* @returns {JSON} Returns response format
*/
const successResponse = ({ statusCode = 200, responseCode = 'OK', message, result = [], meta = {} }) => {
let response = {
statusCode,
responseCode,
message,
result,
meta: { ...meta, correlation: correlationId.getId() },
}

logger.info('Request Response', { response: response })

return response
}

/**
* failure response
* @method
* @name failureResponse
* @param {String} statusCode status code of the failure response.
* @param {String} responseCode response code.
* @param {String} message response message.
* @param {String} result - result
* @returns {JSON} Returns response error
*/
const failureResponse = ({ message = 'Oops! Something Went Wrong.', statusCode = 500, responseCode }) => {
const error = new Error(message)
error.statusCode = statusCode
error.responseCode = responseCode
return error
}

module.exports = {
successResponse,
failureResponse,
}
21 changes: 11 additions & 10 deletions src/jsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,17 @@
"moduleResolution": "node",
"resolveJsonModule": true,
"paths": {
"@configs*": ["./configs*"],
"@constants*": ["./constants*"],
"@controllers*": ["./controllers*"],
"@generics*": ["./generics*"],
"@health-checks*": ["./health-checks*"],
"@middlewares*": ["./middlewares*"],
"@public*": ["./public*"],
"@routes*": ["./routes*"],
"@services*": ["./services*"],
"@database*": ["./database*"]
"@configs/*": ["configs/*"],
"@constants/*": ["constants/*"],
"@controllers/*": ["controllers/*"],
"@database/*": ["database/*"],
"@generics/*": ["generics/*"],
"@health-checks/*": ["health-checks/*"],
"@helpers/*": ["helpers/*"],
"@middlewares/*": ["middlewares/*"],
"@public/*": ["public/*"],
"@routes/*": ["routes/*"],
"@services/*": ["services/*"]
}
},
"exclude": ["node_modules"]
Expand Down
20 changes: 6 additions & 14 deletions src/middlewares/authenticator.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,19 @@
*/
const httpStatusCode = require('@generics/http-status')
const apiResponses = require('@constants/api-responses')
const common = require('@constants/common')
const responses = require('@helpers/responses')

module.exports = async function (req, res, next) {
try {
let internalAccess = false
if (
req.headers.internal_access_token &&
process.env.INTERNAL_ACCESS_TOKEN == req.headers.internal_access_token
) {
internalAccess = true
}
if (internalAccess == true) {
next()
return
} else {
throw common.failureResponse({
const internalAccess =
req.headers.internal_access_token && process.env.INTERNAL_ACCESS_TOKEN === req.headers.internal_access_token
if (internalAccess) return next()
else
throw responses.failureResponse({
message: apiResponses.UNAUTHORIZED_REQUEST,
statusCode: httpStatusCode.unauthorized,
responseCode: 'UNAUTHORIZED',
})
}
} catch (err) {
next(err)
}
Expand Down
1 change: 1 addition & 0 deletions src/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
"@controllers": "controllers",
"@generics": "generics",
"@health-checks": "health-checks",
"@helpers": "helpers",
"@middlewares": "middlewares",
"@public": "public",
"@routes": "routes",
Expand Down
50 changes: 33 additions & 17 deletions src/routes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,26 +94,42 @@ module.exports = (app) => {

// Global error handling middleware, should be present in last in the stack of a middleware's
app.use((error, req, res, next) => {
const status = error.statusCode || 500
const responseCode = error.responseCode || 'SERVER_ERROR'
const message = error.message || ''
let errorData = []
if (error.statusCode || error.responseCode || error.message) {
// Detailed error response
const status = error.statusCode || 500
const responseCode = error.responseCode || 'SERVER_ERROR'
const message = error.message || 'Oops! Something Went Wrong.'
const errorData = error.data || []

if (error.data) {
errorData = error.data
}
logger.info(message, { message: error })

const options = {
responseCode,
error: errorData,
meta: { correlation: correlationId.getId() },
}

const interpolationOptions = {
...error?.interpolation,
interpolation: { escapeValue: false },
}

options.message = error.interpolation ? req.t(message, interpolationOptions) : req.t(message)

if (status == 500) {
logger.error('Server error!', { message: error, triggerNotification: true })
res.status(status).json(options)
} else {
logger.info(message, { message: error })
}
// Limited info response
const errorMessage = 'Oops! Something Went Wrong.'

res.status(status).json({
responseCode,
message,
error: errorData,
meta: { correlation: correlationId.getId() },
})
logger.error('Server error!', { message: error.stack, triggerNotification: true })
console.error('Error occurred on the server:')
console.error(error)

res.status(500).json({
responseCode: 'SERVER_ERROR',
message: errorMessage,
meta: { correlation: correlationId.getId() },
})
}
})
}
6 changes: 3 additions & 3 deletions src/services/email.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const emailNotifications = require('@generics/helpers/email-notifications')
const common = require('@constants/common')
const httpStatusCode = require('@generics/http-status')
const apiResponses = require('@constants/api-responses')
const responses = require('@helpers/responses')

module.exports = class EmailHelper {
/**
Expand All @@ -20,13 +20,13 @@ module.exports = class EmailHelper {
if (bodyData.type == 'email' && bodyData.email) {
let result = await emailNotifications.sendEmail(bodyData.email)
if (result && result.status == 'success') {
return common.successResponse({
return responses.successResponse({
statusCode: httpStatusCode.ok,
message: apiResponses.EMAIL_SENT_SUCCESSFULLY,
result,
})
} else {
return common.failureResponse({
return responses.failureResponse({
message: apiResponses.MAIL_SENT_FAILED,
statusCode: httpStatusCode.bad_request,
responseCode: 'CLIENT_ERROR',
Expand Down