added gcs
This commit is contained in:
parent
9bb36cd827
commit
53426b950a
10437
package-lock.json
generated
10437
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -114,7 +114,8 @@
|
||||
"webpack-unassert-loader": "^1.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"aws-sdk": "^2.329.0",
|
||||
"@google-cloud/storage": "^2.0.3",
|
||||
"aws-sdk": "^2.328.0",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"choo": "^6.13.0",
|
||||
"cldr-core": "^32.0.0",
|
||||
@ -122,6 +123,7 @@
|
||||
"convict": "^4.4.0",
|
||||
"express": "^4.16.3",
|
||||
"fluent": "^0.6.4",
|
||||
"fast-crc32c": "^1.0.4",
|
||||
"fluent-langneg": "^0.1.0",
|
||||
"helmet": "^3.13.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
|
@ -9,6 +9,11 @@ const conf = convict({
|
||||
default: '',
|
||||
env: 'S3_BUCKET'
|
||||
},
|
||||
gcs_bucket: {
|
||||
format: String,
|
||||
default: '',
|
||||
env: 'GCS_BUCKET'
|
||||
},
|
||||
redis_host: {
|
||||
format: String,
|
||||
default: 'localhost',
|
||||
|
37
server/storage/gcs.js
Normal file
37
server/storage/gcs.js
Normal file
@ -0,0 +1,37 @@
|
||||
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) {
|
||||
return this.bucket.file(id).createReadStream();
|
||||
}
|
||||
|
||||
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;
|
@ -5,7 +5,14 @@ const createRedisClient = require('./redis');
|
||||
|
||||
class DB {
|
||||
constructor(config) {
|
||||
const Storage = config.s3_bucket ? require('./s3') : require('./fs');
|
||||
let Storage = null;
|
||||
if (config.s3_bucket) {
|
||||
Storage = require('./s3');
|
||||
} else if (config.gcs_bucket) {
|
||||
Storage = require('./gcs');
|
||||
} else {
|
||||
Storage = require('./fs');
|
||||
}
|
||||
this.log = mozlog('send.storage');
|
||||
this.expireSeconds = config.expire_seconds;
|
||||
this.storage = new Storage(config, this.log);
|
||||
|
Loading…
Reference in New Issue
Block a user