11import { Context } from 'aws-lambda' ;
22import bodyParser from 'body-parser' ;
3- import { isBoom } from 'boom' ;
4- import * as Boom from 'boom' ;
53import connect , { HandleFunction } from 'connect' ;
64import cookieParser from 'cookie-parser' ;
75import * as fs from 'fs-extra' ;
86import { createServer , IncomingMessage , ServerResponse } from 'http' ;
9- import { NOT_FOUND , OK } from 'http-status-codes' ;
7+ import { StatusCodes } from 'http-status-codes' ;
108import * as os from 'os' ;
119import * as path from 'path' ;
1210import { URL } from 'url' ;
11+ import { HttpError , InternalServerError } from './errors/http' ;
1312
1413import { FunctionSet } from './function-set' ;
1514import { asyncMiddleware , cloudfrontPost } from './middlewares' ;
@@ -92,7 +91,7 @@ export class BehaviorRouter {
9291 if ( ( req . method || '' ) . toUpperCase ( ) === 'PURGE' ) {
9392 await this . purgeStorage ( ) ;
9493
95- res . statusCode = OK ;
94+ res . statusCode = StatusCodes . OK ;
9695 res . end ( ) ;
9796 return ;
9897 }
@@ -101,7 +100,7 @@ export class BehaviorRouter {
101100 const cfEvent = convertToCloudFrontEvent ( req , this . builder ( 'viewer-request' ) ) ;
102101
103102 if ( ! handler ) {
104- res . statusCode = NOT_FOUND ;
103+ res . statusCode = StatusCodes . NOT_FOUND ;
105104 res . end ( ) ;
106105 return ;
107106 }
@@ -111,7 +110,7 @@ export class BehaviorRouter {
111110 const response = await lifecycle . run ( req . url as string ) ;
112111
113112 if ( ! response ) {
114- throw Boom . internal ( ) ;
113+ throw new InternalServerError ( 'No response set after full request lifecycle' ) ;
115114 }
116115
117116 res . statusCode = parseInt ( response . status , 10 ) ;
@@ -127,10 +126,8 @@ export class BehaviorRouter {
127126
128127 res . end ( response . body ) ;
129128 } catch ( err ) {
130- if ( isBoom ( err ) ) {
131- this . handleError ( err , res ) ;
132- return ;
133- }
129+ this . handleError ( err , res ) ;
130+ return ;
134131 }
135132 } ) ) ;
136133
@@ -147,11 +144,19 @@ export class BehaviorRouter {
147144 }
148145 }
149146
150- public handleError ( err : Boom < any > , res : ServerResponse ) {
151- res . statusCode = err . output . statusCode ;
152- res . statusMessage = err . output . payload . error ;
147+ // Format errors
148+ public handleError ( err : HttpError , res : ServerResponse ) {
149+ res . statusCode = err . statusCode || StatusCodes . INTERNAL_SERVER_ERROR ;
150+
151+ const payload = JSON . stringify ( err . hasOwnProperty ( 'getResponsePayload' ) ?
152+ err . getResponsePayload ( ) :
153+ {
154+ code : StatusCodes . INTERNAL_SERVER_ERROR ,
155+ message : err . stack || err . message
156+ }
157+ ) ;
153158
154- res . end ( err . message ) ;
159+ res . end ( payload ) ;
155160 }
156161
157162 public async purgeStorage ( ) {
0 commit comments