summaryrefslogtreecommitdiffstats
path: root/server/lib/external-backends
diff options
context:
space:
mode:
authorJannik Schönartz2019-02-03 23:30:30 +0100
committerJannik Schönartz2019-02-03 23:30:30 +0100
commitaf9721475fae413f6bd8108e1258ab8fc9572248 (patch)
tree821249d58143117bb9108d958f64f1738128837e /server/lib/external-backends
parent[ipxe builder] Disable building/cleaning if a build process is already running (diff)
downloadbas-af9721475fae413f6bd8108e1258ab8fc9572248.tar.gz
bas-af9721475fae413f6bd8108e1258ab8fc9572248.tar.xz
bas-af9721475fae413f6bd8108e1258ab8fc9572248.zip
[external-backeds] Add get file for the iDoIT backend
/api/backends/:id/:uuid/files -> File list for the backend (:id) and the client (:uuid) /api/backends/:id/:uuid/files/:filename -> Content of the file (:filename) from the client (:uuid) in the backend (:id)
Diffstat (limited to 'server/lib/external-backends')
-rw-r--r--server/lib/external-backends/backends/idoit-backend.js73
-rw-r--r--server/lib/external-backends/index.js7
2 files changed, 79 insertions, 1 deletions
diff --git a/server/lib/external-backends/backends/idoit-backend.js b/server/lib/external-backends/backends/idoit-backend.js
index 9245b58..db8ffd1 100644
--- a/server/lib/external-backends/backends/idoit-backend.js
+++ b/server/lib/external-backends/backends/idoit-backend.js
@@ -672,6 +672,77 @@ class IdoitBackend extends ExternalBackends {
return result
}
+ async getFileList (credentials, externalId) {
+ var c = this.mapCredentials(credentials)
+ var login = await this.getSession(c)
+ var sid = login.data.result['session-id']
+
+ var config = {
+ timeout: 180000,
+ headers: {
+ 'X-RPC-Auth-Session': sid,
+ 'Content-Type': 'application/json'
+ }
+ }
+ var body = {
+ 'version': '2.0',
+ 'method': 'cmdb.category.read',
+ 'params': {
+ 'objID': externalId,
+ 'category': 'C__CATG__FILE',
+ 'apikey': c.apikey,
+ 'language': 'en'
+ },
+ 'id': 1
+ }
+ let result = await axios.post(c.url, body, config)
+ return result.data.result
+ }
+
+ async getFile (credentials, externalId, filename) {
+ var c = this.mapCredentials(credentials)
+ var login = await this.getSession(c)
+ var sid = login.data.result['session-id']
+
+ var config = {
+ timeout: 180000,
+ headers: {
+ 'X-RPC-Auth-Session': sid,
+ 'Content-Type': 'application/json'
+ }
+ }
+
+ var body = {
+ 'version': '2.0',
+ 'method': 'cmdb.category.read',
+ 'params': {
+ 'objID': externalId,
+ 'category': 'C__CATG__FILE',
+ 'apikey': c.apikey,
+ 'language': 'en'
+ },
+ 'id': 1
+ }
+ let files = await axios.post(c.url, body, config)
+ let fileObjId = files.data.result.find(x => x.file.title === filename).file.id
+
+ var body = {
+ 'version': '2.0',
+ 'method': 'cmdb.category.read',
+ 'params': {
+ 'objID': fileObjId,
+ 'category': 'C__CMDB__SUBCAT__FILE_VERSIONS',
+ 'apikey': c.apikey,
+ 'language': 'en'
+ },
+ 'id': 1
+ }
+ let result = await axios.post(c.url, body, config)
+ result = result.data.result[0]
+
+ return { filename: result.file_title, value: result.file_content.value, md5: result.md5_hash }
+ }
+
async uploadFiles (credentials, externalId, files) {
var c = this.mapCredentials(credentials)
var login = await this.getSession(c)
@@ -691,7 +762,7 @@ class IdoitBackend extends ExternalBackends {
'method': 'cmdb.object.create',
'params': {
'type': 'C__OBJTYPE__FILE',
- 'title': key,
+ 'title': files[key].name,
'apikey': c.apikey,
'language': 'en'
},
diff --git a/server/lib/external-backends/index.js b/server/lib/external-backends/index.js
index c782807..a0ba25b 100644
--- a/server/lib/external-backends/index.js
+++ b/server/lib/external-backends/index.js
@@ -157,6 +157,13 @@ class ExternalBackends {
async uploadFiles (credentials, externalId, files) {
return { success: false, status: 'NOT_IMPLEMENTED_EXCEPTION', error: 'The provided backend does not have an uploadFiles method' }
}
+
+ async getFileList (credentials, externalId) {
+ return { success: false, status: 'NOT_IMPLEMENTED_EXCEPTION', error: 'The provided backend does not have an getFileList method' }
+ }
+ async getFile (credentials, externalId, filename) {
+ return { success: false, status: 'NOT_IMPLEMENTED_EXCEPTION', error: 'The provided backend does not have an getFile method' }
+ }
}
module.exports = ExternalBackends