-
Notifications
You must be signed in to change notification settings - Fork 0
/
listProjectImages.js
47 lines (42 loc) · 1.57 KB
/
listProjectImages.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const BUCKET_NAME = 'harbourcontractorsimages';
const CLOUD_FRONT_URL = 'https://d8b2kltqfdpv.cloudfront.net';
exports.handler = async (event) => {
const projectName = event.pathParameters.projectName;
const prefix = `${projectName}/`;
try {
const s3Params = {
Bucket: BUCKET_NAME,
Prefix: prefix,
};
const s3Response = await s3.listObjectsV2(s3Params).promise();
const imageUrls = s3Response.Contents
.filter(content => !content.Key.endsWith('/'))
.map(content => {
return `${CLOUD_FRONT_URL}/${encodeURIComponent(content.Key)}`;
});
return {
statusCode: 200,
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,GET"
},
body: JSON.stringify(imageUrls),
};
} catch (error) {
console.error('Error listing images:', error);
return {
statusCode: 500,
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers": "Content-Type",
"Access-Control-Allow-Methods": "OPTIONS,GET"
},
body: JSON.stringify({ message: 'Failed to list project images', error: error.message }),
};
}
};