diff --git a/CHANGELOG.md b/CHANGELOG.md index a9f08f5..e622133 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Changed +## [0.11.0] - 2017-07-23 +### Changed +- add output image's ContentType to S3 Object's parameters (previously defaulted to `application/octet-stream`) (#43, #44) + + ## [0.10.0] - 2017-07-02 ### Added - added this CHANGELOG from @adieuadieu diff --git a/package.json b/package.json index 094a470..054faa5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "serverless-sharp-image", - "version": "0.10.0", + "version": "0.10.1", "description": "Serverless-based Lambda function to resize images based on S3 events with the awesome Sharp library", "main": "handler.js", "engines": { diff --git a/src/image.js b/src/image.js index 0d8d133..c87c9f3 100644 --- a/src/image.js +++ b/src/image.js @@ -5,15 +5,24 @@ import { makeKey, decodeS3EventKey } from './utils' const { outputs } = config -export default (async function processItem ( - { eventName, s3: { object: { key: undecodedKey } } = { object: { key: false } } }, -) { +const imageMimeTypes = { + jpeg: 'image/jpeg', + png: 'image/png', + webp: 'image/webp', + gif: 'image/gif', + svg: 'image/svg+xml', +} + +export default (async function processItem ({ + eventName, + s3: { object: { key: undecodedKey } } = { object: { key: false } }, +}) { const key = decodeS3EventKey(undecodedKey) console.log('Processing: ', key) if (eventName.split(':')[0] !== 'ObjectCreated') { throw new Error( - `Event does not contain a valid type (e.g. ObjectCreated). Invoked by event name: ${eventName}`, + `Event does not contain a valid type (e.g. ObjectCreated). Invoked by event name: ${eventName}` ) } @@ -26,7 +35,12 @@ export default (async function processItem ( const context = { key, type } return Promise.all( - streams.map((stream, index) => - upload(stream, { ...outputs[index].params, Key: makeKey(outputs[index].key, context) })), + streams.map(async (stream, index) => + upload(stream, { + ContentType: imageMimeTypes[(await stream.metadata()).format], + ...outputs[index].params, + Key: makeKey(outputs[index].key, context), + }) + ) ) -}); +})