UNPKG

linagora-rse

Version:
74 lines (61 loc) 2.12 kB
'use strict'; var core = require('../../core'); var mongodb = core.db.mongo; /** * Store the document store configuration values * * @param {Request} req * @param {Response} res * @return {json|*|json|json|json|json} */ function store(req, res) { var data = req.body; if (!data.hostname || !data.port || !data.dbname) { return res.status(400).json({ error: { status: 400, message: 'Bad Request', details: 'hostname, port and dbname are required'}}); } if ((data.username && !data.password) || (!data.username && data.password)) { return res.status(400).json({ error: { status: 400, message: 'Bad Request', details: 'username and password should both be set or both left empty'}}); } var port = data.port; if (port !== parseInt(port, 10)) { return res.status(400).json({ error: { status: 400, message: 'Bad Request', details: 'port is not a number'}}); } var p = parseInt(port, 10); if (p <= 0) { return res.status(400).json({ error: { status: 400, message: 'Bad Request', details: 'port must be greater than 0'}}); } data.connectionOptions = mongodb.getDefaultOptions(); mongodb.storeConfiguration(data, function(err, mongoConfig) { if (err) { return res.status(500).json({ error: { status: 500, message: 'Server Error', details: err.message}}); } res.status(201).json(mongoConfig); mongodb.init(); }); } module.exports.store = store; /** * Test the connection to the document store * * @param {Request} req * @param {Response} res */ function test(req, res) { var hostname = req.params.hostname; var port = req.params.port; var dbname = req.params.dbname; var username = null; var password = null; if (req.body && req.body.username && req.body.password) { username = req.body.username; password = req.body.password; } mongodb.validateConnection(hostname, port, dbname, username, password, function(err) { if (err) { res.status(503).json({ error: { code: 503, message: 'Connection error', details: err.message}}); } else { res.status(200).end(); } }); } module.exports.test = test;