@middy/s3-key-normalizer
Version:
S3 key normalizer middleware for the middy framework
39 lines (29 loc) • 1.23 kB
JavaScript
;
const s3KeyNormalizerMiddleware = () => ({
before: s3KeyNormalizerMiddlewareBefore
});
const s3KeyNormalizerMiddlewareBefore = async request => {
parseEvent(request.event);
};
const parseEvent = event => {
const records = event === null || event === void 0 ? void 0 : event.Records;
if (!Array.isArray(records)) return;
for (const record of records) {
if (record.eventSource === 'aws:s3') {
normalizeS3Key(record);
} else if (record.EventSource === 'aws:sns') {
parseEvent(record.Sns.Message);
} else if (record.eventSource === 'aws:sqs') {
parseEvent(record.body);
}
}
};
const normalizeS3KeyReplacePlus = /\+/g;
const normalizeS3Key = record => {
var _record$s, _record$s$object;
const eventVersion = Number.parseFloat(record.eventVersion);
if (record !== null && record !== void 0 && (_record$s = record.s3) !== null && _record$s !== void 0 && (_record$s$object = _record$s.object) !== null && _record$s$object !== void 0 && _record$s$object.key && eventVersion >= 2 && eventVersion < 3) {
record.s3.object.key = decodeURIComponent(record.s3.object.key.replace(normalizeS3KeyReplacePlus, ' '));
}
};
module.exports = s3KeyNormalizerMiddleware;