function uploadToS3(destination, bucket, mime_type, storage_class, gm) {
return new Promise((resolve, reject) => {
try {
const target_stream = S3Stream.upload({
Bucket: bucket,
Key: destination,
ContentType: mime_type,
StorageClass: storage_class,
});
const file_type = mime_type.substring(mime_type.indexOf('/') + 1);
gm.stream(file_type, (err, stdout, stderr) => {
if (err) {
return reject({ statusCode: 500, body: `{"message":"${err.message}"}` });
}
stdout.on('error', err => reject({ statusCode: 500, body: `{"message":"${err.message}"}` }));
stderr.on('data', data => reject({ statusCode: 500, body: `{"message":"${data}"}` }));
stdout.pipe(target_stream)
.on('uploaded', done => resolve())
.on('error', err => reject({ statusCode: 500, body: `{"message":"${err.message}"}` }));
});
} catch (err) {
return reject({ statusCode: 500, body: `{"message":"${err.message}"}` });
}
});
}