Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 1x 1x | /** * Module dependencies */ const AWS = require("aws-sdk"); const sharp = require("sharp"); function isImage(file) { const types = [".png", ".jpg", ".gif"]; let image = false; Object.values(types).forEach((type) => { if (file.ext === type) image = true; return image; }); return image; } module.exports = { init(config) { const S3 = new AWS.S3({ apiVersion: "2006-03-01", ...config, }); return { async upload(file, customParams = {}) { let webP; if (isImage(file)) { webP = await sharp(file.buffer) .webp() .toBuffer(); } return new Promise((resolve, reject) => { // upload file on S3 bucket const path = file.path ? `${file.path}/` : ""; S3.upload( { Key: `${path}${file.hash}${file.ext}`, Body: Buffer.from(file.buffer, "binary"), ACL: "public-read", ContentType: file.mime, ...customParams, }, (err) => { if (err) { return reject(err); } return resolve(); }, ); if (isImage(file)) { S3.upload( { Key: `webp/${path}${file.hash}.webp`, Body: Buffer.from(webP.buffer, "binary"), ACL: "public-read", ContentType: file.mime, ...customParams, }, (err) => { if (err) { return reject(err); } return resolve(); }, ); } }); }, delete(file, customParams = {}) { return new Promise((resolve, reject) => { // delete file on S3 bucket const path = file.path ? `${file.path}/` : ""; S3.deleteObject( { Key: `${path}${file.hash}${file.ext}`, ...customParams, }, (err) => { if (err) { return reject(err); } return resolve(); }, ); S3.deleteObject( { Key: `webp/${path}${file.hash}.webp`, ...customParams, }, (err) => { if (err) { return reject(err); } return resolve(); }, ); }); }, }; }, isImage, }; |