added gcs
This commit is contained in:
parent
9bb36cd827
commit
53426b950a
File diff suppressed because it is too large
Load Diff
|
@ -114,7 +114,8 @@
|
||||||
"webpack-unassert-loader": "^1.2.0"
|
"webpack-unassert-loader": "^1.2.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"aws-sdk": "^2.329.0",
|
"@google-cloud/storage": "^2.0.3",
|
||||||
|
"aws-sdk": "^2.328.0",
|
||||||
"babel-polyfill": "^6.26.0",
|
"babel-polyfill": "^6.26.0",
|
||||||
"choo": "^6.13.0",
|
"choo": "^6.13.0",
|
||||||
"cldr-core": "^32.0.0",
|
"cldr-core": "^32.0.0",
|
||||||
|
@ -122,6 +123,7 @@
|
||||||
"convict": "^4.4.0",
|
"convict": "^4.4.0",
|
||||||
"express": "^4.16.3",
|
"express": "^4.16.3",
|
||||||
"fluent": "^0.6.4",
|
"fluent": "^0.6.4",
|
||||||
|
"fast-crc32c": "^1.0.4",
|
||||||
"fluent-langneg": "^0.1.0",
|
"fluent-langneg": "^0.1.0",
|
||||||
"helmet": "^3.13.0",
|
"helmet": "^3.13.0",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
|
|
|
@ -9,6 +9,11 @@ const conf = convict({
|
||||||
default: '',
|
default: '',
|
||||||
env: 'S3_BUCKET'
|
env: 'S3_BUCKET'
|
||||||
},
|
},
|
||||||
|
gcs_bucket: {
|
||||||
|
format: String,
|
||||||
|
default: '',
|
||||||
|
env: 'GCS_BUCKET'
|
||||||
|
},
|
||||||
redis_host: {
|
redis_host: {
|
||||||
format: String,
|
format: String,
|
||||||
default: 'localhost',
|
default: 'localhost',
|
||||||
|
|
|
@ -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 {
|
class DB {
|
||||||
constructor(config) {
|
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.log = mozlog('send.storage');
|
||||||
this.expireSeconds = config.expire_seconds;
|
this.expireSeconds = config.expire_seconds;
|
||||||
this.storage = new Storage(config, this.log);
|
this.storage = new Storage(config, this.log);
|
||||||
|
|
Loading…
Reference in New Issue