@@ -13,6 +13,36 @@ function handleErr(err, response) {
13
13
return ;
14
14
}
15
15
16
+ function createCallback ( response ) {
17
+ return function callback ( err , lambdaResponse ) {
18
+ if ( err ) {
19
+ return handleErr ( err , response ) ;
20
+ }
21
+
22
+ response . statusCode = lambdaResponse . statusCode ;
23
+ for ( const key in lambdaResponse . headers ) {
24
+ response . setHeader ( key , lambdaResponse . headers [ key ] ) ;
25
+ }
26
+ response . write (
27
+ lambdaResponse . isBase64Encoded
28
+ ? base64 . decode ( lambdaResponse . body )
29
+ : lambdaResponse . body
30
+ ) ;
31
+ response . end ( ) ;
32
+ }
33
+ }
34
+
35
+ function promiseCallback ( promise , callback ) {
36
+ if ( ! promise ) return ;
37
+ if ( typeof promise . then !== 'function' ) return ;
38
+ if ( typeof callback !== 'function' ) return ;
39
+
40
+ promise . then (
41
+ function ( data ) { callback ( null , data ) } ,
42
+ function ( err ) { callback ( err , null ) }
43
+ ) ;
44
+ }
45
+
16
46
function createHandler ( dir ) {
17
47
return function ( request , response ) {
18
48
var func = request . path . split ( "/" ) . filter ( function ( e ) {
@@ -39,22 +69,9 @@ function createHandler(dir) {
39
69
isBase64Encoded : isBase64
40
70
} ;
41
71
42
- handler . handler ( lambdaRequest , { } , function ( err , lambdaResponse ) {
43
- if ( err ) {
44
- return handleErr ( err , response ) ;
45
- }
46
-
47
- response . statusCode = lambdaResponse . statusCode ;
48
- for ( const key in lambdaResponse . headers ) {
49
- response . setHeader ( key , lambdaResponse . headers [ key ] ) ;
50
- }
51
- response . write (
52
- lambdaResponse . isBase64Encoded
53
- ? base64 . decode ( lambdaResponse . body )
54
- : lambdaResponse . body
55
- ) ;
56
- response . end ( ) ;
57
- } ) ;
72
+ var callback = createCallback ( response ) ;
73
+ var promise = handler . handler ( lambdaRequest , { } , callback ) ;
74
+ promiseCallback ( promise , callback ) ;
58
75
} ;
59
76
}
60
77
0 commit comments