UNPKG

@middy/s3-key-normalizer

Version:

S3 key normalizer middleware for the middy framework

39 lines (29 loc) 1.23 kB
"use strict"; 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;