summaryrefslogtreecommitdiffstats
path: root/server/api/backends.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/api/backends.js')
-rw-r--r--server/api/backends.js113
1 files changed, 88 insertions, 25 deletions
diff --git a/server/api/backends.js b/server/api/backends.js
index b744bd2..ff165a4 100644
--- a/server/api/backends.js
+++ b/server/api/backends.js
@@ -3,7 +3,8 @@ const path = require('path')
const ExternalBackends = require(path.join(__appdir, 'lib', 'external-backends', 'external-backends.js'))
var db = require(path.join(__appdir, 'lib', 'sequelize'))
-module.exports = {
+// GET requests
+module.exports.get = {
getCredentialsByType: function (req, res) {
const backendType = req.query.type
const b = new ExternalBackends()
@@ -14,7 +15,7 @@ module.exports = {
res.status(200).send(instance.getCredentials())
},
- getBackendInfoById: function (req, res) {
+ getInfoById: function (req, res) {
const backendId = req.query.id
db.backend.findOne({ where: { id: backendId } }).then(backend => {
const b = {
@@ -27,7 +28,7 @@ module.exports = {
})
},
- getBackendTypes: function (req, res) {
+ getTypes: function (req, res) {
const backends = new ExternalBackends()
var files = backends.getBackends()
@@ -39,7 +40,7 @@ module.exports = {
res.status(200).send(files)
},
- getBackendList: function (req, res) {
+ getList: function (req, res) {
db.backend.findAll({
attributes: ['id', 'name', 'type']
}).then(function (backends) {
@@ -47,44 +48,106 @@ module.exports = {
})
},
- checkConnection: function (req, res) {
- var x = Math.floor(Math.random() * Math.floor(2))
- var y = ''
- if (x === 0) {
- y = 'success'
- } else {
- y = 'error'
- }
- var w = 'Oh noes! An error occurred.'
- var z = Math.floor(Math.random() * Math.floor(5000))
-
-
- setTimeout(function() { res.status(200).send({ status: y, msg: w }) }, 0)
+ getObject: function (req, res) {
+ const id = req.query.id
+ const oid = req.query.oid
+ db.backend.findOne({ where: { id: id } }).then(backend => {
+ const ba = new ExternalBackends()
+ const instance = ba.getInstance(backend.type)
+ instance.getRoomdata(backend.credentials, oid).then(result => {
+ res.status(200).send(result)
+ })
+ })
+ },
+
+ getObjectTypes: function (req, res) {
+ const id = req.query.id
+ db.backend.findOne({ where: { id: id } }).then(backend => {
+ const ba = new ExternalBackends()
+ const instance = ba.getInstance(backend.type)
+ instance.getObjectTypes(backend.credentials).then(result => {
+ res.status(200).send(result)
+ })
+ })
+ },
+
+ getSyncSettings: function (req, res) {
+ const id = req.query.id
+ var types = {}
+ db.backend.findOne({ where: { id: id } }).then(backend => {
+ types.groups = JSON.parse(backend.groups)
+ types.clients = JSON.parse(backend.clients)
+ types.sync = backend.sync
+ res.status(200).send(types)
+ })
},
- // POST REQUESTS
- saveBackend: function (req, res) {
+ getSyncTypes: function (req, res) {
+ const id = req.query.id
+ db.backend.findOne({ where: { id: id } }).then(backend => {
+ const ba = new ExternalBackends()
+ const instance = ba.getInstance(backend.type)
+ res.status(200).send(instance.getSyncTypes())
+ })
+ }
+}
+
+// POST requests
+module.exports.post = {
+ save: function (req, res) {
// Save credentials in the db.
- const formData = req.body
- const credentialString = JSON.stringify(formData.backendCredentials)
+ const backend = req.body
+ const credentialString = JSON.stringify(backend.credentials)
- if (formData.backendId === 0) {
+ if (backend.id === 0) {
// Insert new backend in the db.
- db.backend.create({ name: formData.backendName, type: formData.backendType, credentials: credentialString })
+ db.backend.create({ name: backend.name, type: backend.type, credentials: credentialString })
} else {
// Update an existing backend in the db.
- db.backend.update({ name: formData.backendName, type: formData.backendType, credentials: credentialString }, { where: { id: formData.backendId } })
+ db.backend.update({ name: backend.name, type: backend.type, credentials: credentialString }, { where: { id: backend.id } })
}
// db.backend.findOne({})
res.status(200).send('success')
},
- deleteBackends: function (req, res) {
+ delete: function (req, res) {
const backendIds = req.body.id
db.backend.destroy({ where: { id: backendIds } }).then(function () {
res.status(200).send('success')
})
+ },
+
+ // If id is set the backend connection in the db is testest.
+ // Else backendinfo has to be set manually, to test unsaved connections.
+ checkConnection: function (req, res) {
+ const id = req.body.id
+
+ var getBackend = null
+ if (id) getBackend = db.backend.findOne({ where: { id: id } })
+ else getBackend = new Promise(resolve => resolve(req.body))
+
+ getBackend.then(backend => {
+ // Creating the backend instance and calling the specific checkConnection.
+ const b = new ExternalBackends()
+ const instance = b.getInstance(backend.type)
+ instance.checkConnection(backend.credentials).then(connection => {
+ res.status(200).send({ success: connection.success, msg: connection.msg })
+ })
+ })
+ },
+
+ // Saves the group / clients assigned object types in the database and sync type.
+ saveSyncSettings: function (req, res) {
+ const id = req.body.id
+ const groups = JSON.stringify(req.body.groups)
+ const clients = JSON.stringify(req.body.clients)
+ const sync = req.body.sync
+ db.backend.findOne({ where: { id: id } }).then(backend => {
+ db.backend.update({ groups: groups, clients: clients, sync: sync }, { where: { id: id } }).then(() => {
+ res.status(200).send()
+ })
+ })
}
}