11var debug ;
2+ var statusCodes = require ( 'http-status-codes' ) ;
23
34module . exports = function ( app , options ) {
45 debug = options . debug ;
@@ -26,7 +27,7 @@ function JSONAPIErrorHandler (err, req, res, next) {
2627 res . set ( 'Content-Type' , 'application/vnd.api+json' ) ;
2728
2829 var errors = [ ] ;
29- var statusCode = err . statusCode || err . status || 500 ;
30+ var statusCode = err . statusCode || err . status || statusCodes . INTERNAL_SERVER_ERROR ;
3031 debug ( 'Error thrown:' ) ;
3132 debug ( 'Raw error object:' , err ) ;
3233
@@ -61,14 +62,14 @@ function JSONAPIErrorHandler (err, req, res, next) {
6162
6263 if ( additionalValidationErrors . indexOf ( err . message ) !== - 1 ) {
6364 debug ( 'Recasting error as a validation error.' ) ;
64- statusCode = 422 ;
65+ statusCode = statusCodes . UNPROCESSABLE_ENTITY ;
6566 err . code = 'presence' ;
6667 err . name = 'ValidationError' ;
6768 }
6869
6970 debug ( 'Handling invalid relationship specified in url' ) ;
7071 if ( / R e l a t i o n ( .* ) i s n o t d e f i n e d f o r ( .* ) m o d e l / . test ( err . message ) ) {
71- statusCode = 400 ;
72+ statusCode = statusCodes . BAD_REQUEST ;
7273 err . message = 'Bad Request' ;
7374 err . code = 'INVALID_INCLUDE_TARGET' ;
7475 err . name = 'BadRequest' ;
@@ -78,7 +79,7 @@ function JSONAPIErrorHandler (err, req, res, next) {
7879 } else {
7980 debug ( 'Unable to determin error type. Treating error as a general 500 server error.' ) ;
8081 //catch all server 500 error if we were unable to understand the error.
81- errors . push ( buildErrorResponse ( 500 , 'Internal Server error' , 'GENERAL_SERVER_ERROR' ) ) ;
82+ errors . push ( buildErrorResponse ( statusCodes . INTERNAL_SERVER_ERROR , 'Internal Server error' , 'GENERAL_SERVER_ERROR' ) ) ;
8283 }
8384
8485 //generalise the error code. More specific error codes are kept
@@ -104,9 +105,9 @@ function JSONAPIErrorHandler (err, req, res, next) {
104105function generalizeStatusCode ( statusCode ) {
105106 switch ( String ( statusCode ) [ 0 ] ) {
106107 case '4' :
107- return 400 ;
108+ return statusCodes . BAD_REQUEST ;
108109 case '5' :
109- return 500 ;
110+ return statusCodes . INTERNAL_SERVER_ERROR ;
110111 }
111112
112113 return statusCode ;
@@ -125,7 +126,7 @@ function generalizeStatusCode (statusCode) {
125126 */
126127function buildErrorResponse ( httpStatusCode , errorDetail , errorCode , errorName , propertyName ) {
127128 return {
128- status : httpStatusCode || 500 ,
129+ status : httpStatusCode || statusCodes . INTERNAL_SERVER_ERROR ,
129130 source : ( propertyName ) ? { pointer : 'data/attributes/' + propertyName } : '' ,
130131 title : errorName || '' ,
131132 code : errorCode || '' ,
0 commit comments