send/server/storage/s3.js

41 lines
829 B
JavaScript
Raw Normal View History

2018-02-06 22:31:18 +00:00
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
class S3Storage {
2018-08-08 18:07:09 +00:00
constructor(config, index, log) {
this.bucket = config.s3_buckets[index];
2018-02-06 22:31:18 +00:00
this.log = log;
}
async length(id) {
const result = await s3
.headObject({ Bucket: this.bucket, Key: id })
.promise();
return result.ContentLength;
}
getStream(id) {
return s3.getObject({ Bucket: this.bucket, Key: id }).createReadStream();
}
set(id, file) {
2018-02-06 22:31:18 +00:00
const upload = s3.upload({
Bucket: this.bucket,
Key: id,
Body: file
});
file.on('error', () => upload.abort());
return upload.promise();
2018-02-06 22:31:18 +00:00
}
del(id) {
return s3.deleteObject({ Bucket: this.bucket, Key: id }).promise();
}
ping() {
return s3.headBucket({ Bucket: this.bucket }).promise();
}
}
module.exports = S3Storage;