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
19 changes: 18 additions & 1 deletion rest.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,23 @@ const checkPatchOverrideSupport = function (req, res) {
return undefined !== override && override === "PATCH"
}

/**
* Creates middleware to validate PATCH override support for POST requests.
* Returns 405 if the request does not have proper X-HTTP-Method-Override header.
*
* @param {string} message - Error message to send if validation fails
* @returns {Function} Express middleware function
*/
const createPatchOverrideMiddleware = (message) => {
return (req, res, next) => {
if (!checkPatchOverrideSupport(req, res)) {
res.statusMessage = message
return res.status(405).end()
}
next()
}
}

/**
* Detects multiple MIME types smuggled into a single Content-Type header.
* The following are the cases that should result in a 415 (not a 500)
Expand Down Expand Up @@ -210,4 +227,4 @@ It may not have completed at all, and most likely did not complete successfully.
res.status(error.status).send(error.message)
}

export default { checkPatchOverrideSupport, verifyJsonContentType, verifyEitherContentType, messenger }
export default { checkPatchOverrideSupport, createPatchOverrideMiddleware, verifyJsonContentType, verifyEitherContentType, messenger }
Loading
Loading