@@ -7,31 +7,30 @@ const Sharp = require('sharp');
7
7
const PathPattern = / ( .* \/ ) ? ( .* ) \/ ( .* ) / ;
8
8
9
9
// parameters
10
- const { BUCKET , URL , WHITELIST } = process . env ;
10
+ const { BUCKET , URL } = process . env ;
11
+ const WHITELIST = process . env . WHITELIST
12
+ ? Object . freeze ( process . env . WHITELIST . split ( ' ' ) )
13
+ : null ;
11
14
12
15
13
16
exports . handler = async ( event ) => {
14
17
const path = event . queryStringParameters . path ;
15
18
const parts = PathPattern . exec ( path ) ;
16
19
const dir = parts [ 1 ] || '' ;
17
- const sizeOption = parts [ 2 ] ;
18
- const options = parts [ 2 ] . split ( '_' ) ;
20
+ const resizeOption = parts [ 2 ] ; // e.g. "150x150_max"
21
+ const sizeAndAction = resizeOption . split ( '_' ) ;
19
22
const filename = parts [ 3 ] ;
20
23
21
-
22
- const sizes = options [ 0 ] . split ( "x" ) ;
23
- const action = options . length > 1 ? options [ 1 ] : null ;
24
+ const sizes = sizeAndAction [ 0 ] . split ( "x" ) ;
25
+ const action = sizeAndAction . length > 1 ? sizeAndAction [ 1 ] : null ;
24
26
25
27
// Whitelist validation.
26
- if ( WHITELIST ) {
27
- const whitelistArr = WHITELIST . split ( ' ' ) ;
28
- if ( ! whitelistArr . includes ( sizeOption ) ) {
29
- return {
30
- statusCode : 400 ,
31
- body : `Unknown size parameter "${ sizeOption } "` ,
32
- headers : { "Content-Type" : "text/plain" }
33
- } ;
34
- }
28
+ if ( WHITELIST && ! WHITELIST . includes ( resizeOption ) ) {
29
+ return {
30
+ statusCode : 400 ,
31
+ body : `WHITELIST is set but does not contain the size parameter "${ resizeOption } "` ,
32
+ headers : { "Content-Type" : "text/plain" }
33
+ } ;
35
34
}
36
35
37
36
// Action validation.
0 commit comments