Skip to content

Commit 8726505

Browse files
committed
save image to s3
1 parent c942fb8 commit 8726505

File tree

1 file changed

+29
-13
lines changed

1 file changed

+29
-13
lines changed

image-save.js

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
'use strict'
22

3-
const fs = require('fs')
4-
const path = require('path')
3+
const mime = require('mime-types')
4+
const S3 = require('aws-sdk/clients/s3')
55
const { send, json } = require('micro')
66
const Filter = require('instagram_js_filter')
77
const effects = new Filter()
88

9+
const s3 = new S3({
10+
region: 'us-west-2',
11+
params: { Bucket: 'medellinjs-microservicios' },
12+
accessKeyId: process.env.AWS_ACCESS_KEY,
13+
secretAccessKey: process.env.AWS_SECRET_KEY
14+
})
15+
916
//
1017
// This microservice will be served as /save
1118
//
@@ -19,40 +26,49 @@ module.exports = async function (req, res) {
1926
const body = await json(req)
2027
const { name, filter } = body
2128

22-
let image
29+
let image, result
2330
try {
2431
image = await convert(name, filter)
25-
await save(name, image)
32+
result = await s3move(name, image)
2633
} catch (e) {
34+
console.log(e.stack)
2735
return send(res, 500, e.message)
2836
}
2937

30-
send(res, 200, { name: name, src: `/saved/${name}` })
38+
send(res, 200, { name: name, src: result.Location })
3139
}
3240

3341
//
3442
// Convert an image and applies a filter
3543
//
36-
function convert (src, filter) {
44+
function convert (name, filter) {
3745
return new Promise((resolve, reject) => {
38-
fs.readFile(path.join(__dirname, 'uploads', src), (err, buffer) => {
46+
s3.getObject({
47+
Key: `uploads/${name}`
48+
}, (err, result) => {
3949
if (err) return reject(err)
4050

41-
const result = effects.apply(buffer, filter, {})
42-
resolve(result)
51+
const image = effects.apply(result.Body, filter, {})
52+
53+
resolve(new Buffer(image, 'base64'))
4354
})
4455
})
4556
}
4657

4758
//
48-
// Saves an image to the file system
59+
// Saves an image to s3
4960
//
50-
function save (name, image) {
61+
function s3move (name, data) {
5162
return new Promise((resolve, reject) => {
52-
fs.writeFile(path.join(__dirname, 'saved', name), new Buffer(image, 'base64'), (err) => {
63+
s3.upload({
64+
Key: `saved/${name}`,
65+
Body: data,
66+
ACL: 'public-read',
67+
ContentType: mime.lookup(name)
68+
}, (err, result) => {
5369
if (err) return reject(err)
5470

55-
resolve()
71+
resolve(result)
5672
})
5773
})
5874
}

0 commit comments

Comments
 (0)