2018-11-02 22:24:10 +01:00
|
|
|
const { Storage } = require('@google-cloud/storage');
|
|
|
|
const storage = new Storage();
|
|
|
|
|
|
|
|
class GCSStorage {
|
|
|
|
constructor(config, log) {
|
|
|
|
this.bucket = storage.bucket(config.gcs_bucket);
|
|
|
|
this.log = log;
|
|
|
|
}
|
|
|
|
|
|
|
|
async length(id) {
|
|
|
|
const data = await this.bucket.file(id).getMetadata();
|
|
|
|
return data[0].size;
|
|
|
|
}
|
|
|
|
|
|
|
|
getStream(id) {
|
2018-11-14 18:50:12 +01:00
|
|
|
return this.bucket.file(id).createReadStream({ validation: false });
|
2018-11-02 22:24:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
set(id, file) {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
file
|
|
|
|
.pipe(this.bucket.file(id).createWriteStream())
|
|
|
|
.on('error', reject)
|
|
|
|
.on('finish', resolve);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
del(id) {
|
|
|
|
return this.bucket.file(id).delete();
|
|
|
|
}
|
|
|
|
|
|
|
|
ping() {
|
|
|
|
return this.bucket.exists();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = GCSStorage;
|