UNPKG

@cdkx/web-application

Version:

Static web application hosting related constructs

66 lines 6.89 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define("@cdkx/web-application/handlers/pre-signed-url-generator", ["require", "exports", "@cdkx/web-application/handlers/base-handler", "mime"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PreSignedUrlGenerator = void 0; const base_handler_1 = require("@cdkx/web-application/handlers/base-handler"); const mime_1 = __importDefault(require("mime")); class PreSignedUrlGenerator extends base_handler_1.BaseHandler { constructor(s3) { super(); this.s3 = s3; } run(event) { var _a; return __awaiter(this, void 0, void 0, function* () { const bucketName = process.env.BUCKET_NAME; if (!bucketName) { return this.encodedResponse({ statusCode: 500, body: { message: 'Missing required environment variable: BUCKET_NAME' }, }); } const { key, expires } = event.queryStringParameters; const maxSize = (_a = event.queryStringParameters['max-size']) !== null && _a !== void 0 ? _a : '104857600'; const uploadPostUrl = this.s3.createPresignedPost({ // when no expiry is explicitly set, it is defaulted to 1 hour Expires: expires ? Number.parseInt(expires) : 3600, Bucket: bucketName, Conditions: [ // by default max 100mb limit applies ['content-length-range', 1, parseInt(maxSize)], ], Fields: { key: key, 'Content-Type': mime_1.default.getType(key), }, }); return this.encodedResponse({ statusCode: 200, body: Object.assign({}, uploadPostUrl), }); }); } } exports.PreSignedUrlGenerator = PreSignedUrlGenerator; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlLXNpZ25lZC11cmwtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvd2ViLWFwcGxpY2F0aW9uL2hhbmRsZXJzL3ByZS1zaWduZWQtdXJsLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFFQSwrRUFBNkM7SUFDN0MsZ0RBQXdCO0lBRXhCLE1BQWEscUJBQXNCLFNBQVEsMEJBQVc7UUFDcEQsWUFBb0IsRUFBTTtZQUN4QixLQUFLLEVBQUUsQ0FBQztZQURVLE9BQUUsR0FBRixFQUFFLENBQUk7UUFFMUIsQ0FBQztRQUVLLEdBQUcsQ0FDUCxLQUFzQjs7O2dCQU90QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFFM0MsSUFBSSxDQUFDLFVBQVUsRUFBRTtvQkFDZixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7d0JBQzFCLFVBQVUsRUFBRSxHQUFHO3dCQUNmLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxvREFBb0QsRUFBRTtxQkFDeEUsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsS0FBSyxDQUFDLHFCQUc5QixDQUFDO2dCQUNGLE1BQU0sT0FBTyxHQUNYLE1BQUMsS0FBSyxDQUFDLHFCQUFpRCxDQUFDLFVBQVUsQ0FBQyxtQ0FDcEUsV0FBVyxDQUFDO2dCQUVkLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ2hELDhEQUE4RDtvQkFDOUQsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSTtvQkFDbEQsTUFBTSxFQUFFLFVBQVU7b0JBQ2xCLFVBQVUsRUFBRTt3QkFDVixxQ0FBcUM7d0JBQ3JDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDL0M7b0JBQ0QsTUFBTSxFQUFFO3dCQUNOLEdBQUcsRUFBRSxHQUFHO3dCQUNSLGNBQWMsRUFBRSxjQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztxQkFDbEM7aUJBQ0YsQ0FBQyxDQUFDO2dCQUVILE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztvQkFDMUIsVUFBVSxFQUFFLEdBQUc7b0JBQ2YsSUFBSSxvQkFDQyxhQUFhLENBQ2pCO2lCQUNGLENBQUMsQ0FBQzs7U0FDSjtLQUNGO0lBbkRELHNEQW1EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQSUdhdGV3YXlFdmVudCB9IGZyb20gJ2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgUzMgfSBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IEJhc2VIYW5kbGVyIH0gZnJvbSAnLi9iYXNlLWhhbmRsZXInO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZSc7XG5cbmV4cG9ydCBjbGFzcyBQcmVTaWduZWRVcmxHZW5lcmF0b3IgZXh0ZW5kcyBCYXNlSGFuZGxlciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgczM6IFMzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGFzeW5jIHJ1bihcbiAgICBldmVudDogQVBJR2F0ZXdheUV2ZW50XG4gICk6IFByb21pc2U8e1xuICAgIHN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiBzdHJpbmcgfTtcbiAgICBib2R5OiBzdHJpbmc7XG4gICAgaXNCYXNlNjRFbmNvZGVkOiBib29sZWFuO1xuICB9PiB7XG4gICAgY29uc3QgYnVja2V0TmFtZSA9IHByb2Nlc3MuZW52LkJVQ0tFVF9OQU1FO1xuXG4gICAgaWYgKCFidWNrZXROYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbmNvZGVkUmVzcG9uc2Uoe1xuICAgICAgICBzdGF0dXNDb2RlOiA1MDAsXG4gICAgICAgIGJvZHk6IHsgbWVzc2FnZTogJ01pc3NpbmcgcmVxdWlyZWQgZW52aXJvbm1lbnQgdmFyaWFibGU6IEJVQ0tFVF9OQU1FJyB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgeyBrZXksIGV4cGlyZXMgfSA9IGV2ZW50LnF1ZXJ5U3RyaW5nUGFyYW1ldGVycyBhcyB7XG4gICAgICBrZXk6IHN0cmluZztcbiAgICAgIGV4cGlyZXM/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBjb25zdCBtYXhTaXplID1cbiAgICAgIChldmVudC5xdWVyeVN0cmluZ1BhcmFtZXRlcnMgYXMgeyAnbWF4LXNpemUnPzogc3RyaW5nIH0pWydtYXgtc2l6ZSddID8/XG4gICAgICAnMTA0ODU3NjAwJztcblxuICAgIGNvbnN0IHVwbG9hZFBvc3RVcmwgPSB0aGlzLnMzLmNyZWF0ZVByZXNpZ25lZFBvc3Qoe1xuICAgICAgLy8gd2hlbiBubyBleHBpcnkgaXMgZXhwbGljaXRseSBzZXQsIGl0IGlzIGRlZmF1bHRlZCB0byAxIGhvdXJcbiAgICAgIEV4cGlyZXM6IGV4cGlyZXMgPyBOdW1iZXIucGFyc2VJbnQoZXhwaXJlcykgOiAzNjAwLFxuICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgQ29uZGl0aW9uczogW1xuICAgICAgICAvLyBieSBkZWZhdWx0IG1heCAxMDBtYiBsaW1pdCBhcHBsaWVzXG4gICAgICAgIFsnY29udGVudC1sZW5ndGgtcmFuZ2UnLCAxLCBwYXJzZUludChtYXhTaXplKV0sXG4gICAgICBdLFxuICAgICAgRmllbGRzOiB7XG4gICAgICAgIGtleToga2V5LFxuICAgICAgICAnQ29udGVudC1UeXBlJzogbWltZS5nZXRUeXBlKGtleSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuZW5jb2RlZFJlc3BvbnNlKHtcbiAgICAgIHN0YXR1c0NvZGU6IDIwMCxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgLi4udXBsb2FkUG9zdFVybCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==