@cdkx/web-application
Version:
Static web application hosting related constructs
66 lines • 6.89 kB
JavaScript
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==