node-rigorous
Version:
Rigorous Framework
57 lines (37 loc) • 1.39 kB
JavaScript
const fs = require('fs');
const aws = require('aws-sdk');
const RigorousError = require('../facades/RigorousError');
const errorsMessages = require('../etc/errorsMessages');
const option = {
bucketS3Name: null,
imageExtension: null,
};
let localAwsS3 = null;
module.exports = {
get: () => localAwsS3,
init: (optionParam, AWS_SECRET_ACCESS_KEY, AWS_ACCESS_KEY_ID) => {
option.bucketS3Name = optionParam.bucketName;
option.imageExtension = optionParam.imageExtension;
localAwsS3 = new aws.S3({
secretAccessKey: AWS_SECRET_ACCESS_KEY,
accessKeyId: AWS_ACCESS_KEY_ID,
});
},
uploadFile: async (fileLocalPathImage, fileNameOnAWS, callbackOnError) => {
try {
const rs = fs.createReadStream(fileLocalPathImage);
console.log('START UPLOAD');
const response = await localAwsS3.upload({
Bucket: option.bucketS3Name,
Key: `${fileNameOnAWS}.${option.imageExtension}`,
Body: rs,
ACL: 'public-read',
}).promise();
return response.Location;
} catch (err) {
callbackOnError(fileLocalPathImage);
console.log(err);
throw new RigorousError(errorsMessages.UploadError, err);
}
},
};