summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Deop2017-08-30 18:58:34 +0200
committerMarc Deop2017-08-30 18:58:34 +0200
commit2c780f53df73a0ba1f13109213d95df7f32cbd8a (patch)
tree165486e711400e2285305e6343faa6a306e52c61
parentd1d6d5810b12645ddb02275ce0c2498b2189a8a0 (diff)
Add support for minio
Diffstat (limited to '')
-rw-r--r--lib/config/default.js7
-rw-r--r--lib/config/environment.js7
-rw-r--r--lib/web/imageRouter.js34
-rw-r--r--package.json1
4 files changed, 49 insertions, 0 deletions
diff --git a/lib/config/default.js b/lib/config/default.js
index a14a4294..a9689974 100644
--- a/lib/config/default.js
+++ b/lib/config/default.js
@@ -48,6 +48,13 @@ module.exports = {
secretAccessKey: undefined,
region: undefined
},
+ minio: {
+ accessKey: undefined,
+ secretKey: undefined,
+ endPoint: undefined,
+ secure: true,
+ port: 9000
+ },
s3bucket: undefined,
// authentication
facebook: {
diff --git a/lib/config/environment.js b/lib/config/environment.js
index 75381ffc..49e44cad 100644
--- a/lib/config/environment.js
+++ b/lib/config/environment.js
@@ -24,6 +24,13 @@ module.exports = {
secretAccessKey: process.env.HMD_S3_SECRET_ACCESS_KEY,
region: process.env.HMD_S3_REGION
},
+ minio: {
+ accessKey: process.env.HMD_MINIO_ACCESS_KEY,
+ secretKey: process.env.HMD_MINIO_SECRET_KEY,
+ endPoint: process.env.HMD_MINIO_ENDPOINT,
+ secure: toBooleanConfig(process.env.HMD_MINIO_SECURE),
+ port: parseInt(process.env.HMD_MINIO_PORT)
+ },
s3bucket: process.env.HMD_S3_BUCKET,
facebook: {
clientID: process.env.HMD_FACEBOOK_CLIENTID,
diff --git a/lib/web/imageRouter.js b/lib/web/imageRouter.js
index bebab302..b17cccbd 100644
--- a/lib/web/imageRouter.js
+++ b/lib/web/imageRouter.js
@@ -73,6 +73,40 @@ imageRouter.post('/uploadimage', function (req, res) {
})
})
break
+
+ case 'minio':
+ var utils = require('../utils')
+ var Minio = require('minio')
+ var minioClient = new Minio.Client({
+ endPoint: config.minio.endPoint,
+ port: config.minio.port,
+ secure: config.minio.secure,
+ accessKey: config.minio.accessKey,
+ secretKey: config.minio.secretKey
+ })
+ fs.readFile(files.image.path, function (err, buffer) {
+ if (err) {
+ logger.error(err)
+ res.status(500).end('upload image error')
+ return
+ }
+
+ var key = path.join('uploads', path.basename(files.image.path))
+ var protocol = config.minio.secure ? 'https' : 'http'
+
+ minioClient.putObject(config.s3bucket, key, buffer, buffer.size, utils.getImageMimeType(files.image.path), function (err, data) {
+ if (err) {
+ logger.error(err)
+ res.status(500).end('upload image error')
+ return
+ }
+ res.send({
+ link: `${protocol}://${config.minio.endPoint}:${config.minio.port}/${config.s3bucket}/${key}`
+ })
+ })
+ })
+ break
+
case 'imgur':
default:
imgur.setClientId(config.imgur.clientID)
diff --git a/package.json b/package.json
index b0f1ae17..eb09e10f 100644
--- a/package.json
+++ b/package.json
@@ -76,6 +76,7 @@
"mermaid": "~7.0.0",
"meta-marked": "^0.4.2",
"method-override": "^2.3.7",
+ "minio": "^3.1.3",
"moment": "^2.17.1",
"morgan": "^1.7.0",
"mysql": "^2.12.0",