bucket.js
const aws = require('aws-sdk');
const AmazonS3URI = require('amazon-s3-uri');
const s3 = new aws.S3({
accessKeyId: process.env.IAM_USER_KEY,
secretAccessKey: process.env.IAM_USER_SECRET,
region: ''
});
module.exports = {
getUrl : async(base64)=>{
return new Promise((resolve,reject)=>{
//create buffer with base64
const base64Data = new Buffer.from(base64.replace(/^data:.+;base64,/, ""), 'base64');
// Getting the file type, ie: jpeg, png or gif
const ext = base64.split(';')[0].split('/')[1];
//Getting de ref application or image
let ref = base64.split(';')[0].split('/')[0];
ref = ref.split(':')[1];
//create filename
let fname = `${Date.now()}.${ext}`;
const params = {
Bucket: process.env.BUCKET_NAME,
Key: fname, // type is not required
Body: base64Data,
ContentEncoding: 'base64', // required
ContentType: `${ref}/${ext}` // required. Notice the back ticks
}
s3.upload(params, function (err, data) {
if (err) {
reject(err);
}else{
resolve(data.Location);
}
});
});
},
getUrlFromFile: async(file)=>{
return new Promise((resolve, reject) => {
let fname = Date.now() + '-' + file.name;
const params = {
Bucket: process.env.BUCKET_NAME, // pass your bucket name
Key: fname, // file will be saved as testBucket/contacts.csv
Body: file.data
};
s3.upload(params, function (s3Err, data) {
if (err) {
reject(err);
}else{
resolve(data.Location);
}
});
});
},
deleteFile: async(url)=>{
return new Promise((resolve, reject) => {
let {
key
} = AmazonS3URI(url);
const params = {
Bucket: process.env.BUCKET_NAME, // pass your bucket name
Key: key
};
s3.headObject(params, (err, metadata) => {
if (err && err.code === 'NotFound') { // no exists nothing to delete
resolve(true)
} else { // exists, we have to delete it
s3.deleteObject(params, (err, data) => {
if (err) {
reject(err);
}
resolve(true); //successfully deleted
});
}
});
});
}
}
jwt.js
const jwt = require('jsonwebtoken');
const signature = 'ichigo';
module.exports = {
sign: (data)=> jwt.sign(data,signature,{expiresIn: '1h'}),
decode: (token)=> {
let decoded = jwt.decode(token);
return decoded.payload;
},
verify: (token)=>{
try {
var decoded = jwt.verify(token, signature);
return decoded;
} catch(err) {
return false;
}
}
}
mailer.js
const nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: process.env.EMAIL,
pass: process.env.EMAIL_TOKEN
}
});
module.exports = {
sendEmail: (from,to,subject,template)=>{
console.log('generando el correo');
let info = transporter.sendMail({
from: from, // sender address
to: to, // list of receivers
subject: subject, // Subject line
html: template // html body
}, function (err, info) {
if(err)
console.log(err);
else
console.log(info);
});
}
}