Skip to content
Open
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
13 changes: 13 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 22 additions & 18 deletions src/handlers/response-validation.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
export default (logger, validateResponse) => (context, request, response) => {

Check warning on line 1 in src/handlers/response-validation.js

View workflow job for this annotation

GitHub Actions / build

Arrow function has too many statements (23). Maximum allowed is 20
// Prevent sending headers if they're already sent
if (response.headersSent) {
return undefined
}

const responseDoesntNeedValidation = response.statusCode >= 400
if (responseDoesntNeedValidation) {
return response.json(context.response)
if (!response.headersSent) {
return response.json(context.response)
}
return context.response
}

const valid = validateResponse
Expand All @@ -27,25 +25,31 @@
response: context.response
})
}
const errorResponse = {
errors: valid.errors,
status: 502,
timestamp: new Date(),
message: 'Bad response'
}
if (!response.headersSent) {
return response.status(502).json({
errors: valid.errors,
status: 502,
timestamp: new Date(),
message: 'Bad response'
})
return response.status(502).json(errorResponse)
}
return undefined
return errorResponse
}

if (!context.response) {
return response.end()
if (!response.headersSent) {
return response.end()
}
return null
}

const contentType = request?.headers?.accept ?? 'application/json'
if (contentType === 'application/json') {
return response.json(context.response)
if (!response.headersSent) {
if (contentType === 'application/json') {
return response.json(context.response)
}
return response.send(context.response)
}

return response.send(context.response)
return context.response
}
Loading