Built motion from commit 5e31ea4.|0.0.32
[motion.git] / server / api / integration / integration.controller.js
index 9bbb990..fac2b89 100644 (file)
@@ -1 +1,179 @@
-var _0x1cbc=["\x75\x73\x65\x20\x73\x74\x72\x69\x63\x74","\x6C\x6F\x64\x61\x73\x68","\x75\x70\x6C\x6F\x61\x64\x2D\x66\x69\x6C\x65","\x2E\x2E\x2F\x2E\x2E\x2F\x63\x6F\x6E\x66\x69\x67\x2F\x65\x6E\x76\x69\x72\x6F\x6E\x6D\x65\x6E\x74","\x70\x61\x74\x68","\x73\x69\x6D\x70\x6C\x65\x2D\x72\x61\x6E\x64\x6F\x6D","\x61\x64\x6D\x2D\x7A\x69\x70","\x73\x74\x72\x69\x6E\x67\x2D\x74\x6F\x2D\x6A\x73\x6F\x6E","\x66\x73","\x49\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E","\x2E\x2E\x2F\x2E\x2E\x2F\x6D\x6F\x64\x65\x6C\x73","\x69\x6E\x64\x65\x78","\x63\x61\x74\x63\x68","\x73\x65\x6E\x64","\x73\x74\x61\x74\x75\x73","\x74\x68\x65\x6E","\x71\x75\x65\x72\x79","\x66\x69\x6E\x64\x41\x6C\x6C","\x73\x68\x6F\x77","\x73\x65\x6E\x64\x53\x74\x61\x74\x75\x73","\x69\x64","\x70\x61\x72\x61\x6D\x73","\x66\x69\x6E\x64\x42\x79\x49\x64","\x63\x72\x65\x61\x74\x65","\x72\x6F\x6F\x74","\x73\x65\x72\x76\x65\x72\x2F\x66\x69\x6C\x65\x73\x2F\x69\x6E\x74\x65\x67\x72\x61\x74\x69\x6F\x6E\x73","\x6A\x6F\x69\x6E","\x4D\x61\x78\x20\x6E\x75\x6D\x62\x65\x72\x20\x6F\x66\x20\x66\x69\x6C\x65\x73\x20\x75\x70\x6C\x6F\x61\x64\x20\x65\x78\x63\x65\x65\x64\x65\x64","\x4F\x6E\x6C\x79\x20\x7A\x69\x70\x20\x66\x6F\x72\x6D\x61\x74\x20\x61\x63\x63\x65\x70\x74\x65\x64","\x54\x68\x65\x20\x6D\x61\x78\x69\x6D\x75\x6D\x20\x66\x69\x6C\x65\x20\x73\x69\x7A\x65\x20\x69\x73\x20\x35\x20\x4D\x62","\x49\x6E\x76\x61\x6C\x69\x64\x20\x72\x65\x71\x75\x65\x73\x74","\x65\x6E\x64","\x66\x69\x6C\x65","\x67\x65\x74\x45\x6E\x74\x72\x69\x65\x73","\x6E\x61\x6D\x65","\x6D\x61\x6E\x69\x66\x65\x73\x74\x2E\x6A\x73\x6F\x6E","\x75\x74\x66\x38","\x67\x65\x74\x44\x61\x74\x61","\x75\x70\x6C\x6F\x61\x64\x5A\x69\x70","\x6C\x6F\x67","\x70\x61\x72\x73\x65","\x65\x78\x74\x72\x61\x63\x74\x41\x6C\x6C\x54\x6F","\x6D\x65\x72\x67\x65","\x6A\x73\x6F\x6E","\x66\x6F\x72\x45\x61\x63\x68","\x75\x6E\x6C\x69\x6E\x6B\x53\x79\x6E\x63","\x6D\x61\x6E\x69\x66\x65\x73\x74","\x6D\x61\x6E\x69\x66\x65\x73\x74\x2E\x6A\x73\x6F\x6E\x20\x6E\x6F\x74\x20\x66\x6F\x75\x6E\x64","\x6F\x6E","\x65\x72\x72\x6F\x72","\x75\x70\x6C\x6F\x61\x64","\x75\x70\x64\x61\x74\x65","\x62\x6F\x64\x79","\x73\x61\x76\x65","\x66\x69\x6E\x64","\x64\x65\x73\x74\x72\x6F\x79"];_0x1cbc[0];var _=require(_0x1cbc[1]);var uploadFile=require(_0x1cbc[2]);var config=require(_0x1cbc[3]);var path=require(_0x1cbc[4]);var sr=require(_0x1cbc[5]);var admZip=require(_0x1cbc[6]);var str2json=require(_0x1cbc[7]);var fs=require(_0x1cbc[8]);var Integration=require(_0x1cbc[10])[_0x1cbc[9]];exports[_0x1cbc[11]]=function(_0x75c0xa,_0x75c0xb){Integration[_0x1cbc[17]]({where:_0x75c0xa[_0x1cbc[16]]})[_0x1cbc[15]](function(_0x75c0xd){return _0x75c0xb[_0x1cbc[14]](200)[_0x1cbc[13]](_0x75c0xd)})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)})};exports[_0x1cbc[18]]=function(_0x75c0xa,_0x75c0xb){Integration[_0x1cbc[22]](_0x75c0xa[_0x1cbc[21]][_0x1cbc[20]])[_0x1cbc[15]](function(_0x75c0xe){if(!_0x75c0xe){return _0x75c0xb[_0x1cbc[19]](404)};return _0x75c0xb[_0x1cbc[13]](_0x75c0xe);})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)})};exports[_0x1cbc[23]]=function(_0x75c0xa,_0x75c0xb){var _0x75c0xf= new uploadFile({dest:path[_0x1cbc[26]](config[_0x1cbc[24]],_0x1cbc[25]),maxFileSize:5*1000000,maxNumberOfFiles:1,minNumberOfFiles:1,acceptFileTypes:/(\.|\/)(zip)$/i,messages:{maxNumberOfFiles:_0x1cbc[27],acceptFileTypes:_0x1cbc[28],maxFileSize:_0x1cbc[29],invalidRequest:_0x1cbc[30]}});_0x75c0xf[_0x1cbc[48]](_0x1cbc[31],function(_0x75c0x10,_0x75c0x11){var _0x75c0x12= new admZip(_0x75c0x11[_0x1cbc[32]][_0x1cbc[4]]);var _0x75c0x13=false;var _0x75c0x14=_0x75c0x12[_0x1cbc[33]]();_0x75c0x14[_0x1cbc[44]](function(_0x75c0x15){if(_0x75c0x15[_0x1cbc[34]]===_0x1cbc[35]){var _0x75c0x16=_0x75c0x15[_0x1cbc[37]]().toString(_0x1cbc[36]);console[_0x1cbc[39]](_0x1cbc[38],_0x75c0x16);try{_0x75c0x13=JSON[_0x1cbc[40]](_0x75c0x16);console[_0x1cbc[39]](_0x1cbc[38],_0x75c0x13);Integration[_0x1cbc[23]](_[_0x1cbc[42]](_0x75c0x11[_0x1cbc[32]],_0x75c0x13))[_0x1cbc[15]](function(_0x75c0xe){_0x75c0x12[_0x1cbc[41]](path[_0x1cbc[26]](config[_0x1cbc[24]],_0x1cbc[25]),true);return _0x75c0xb[_0x1cbc[14]](201)[_0x1cbc[13]](_0x75c0xe);})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)});}catch(e){console[_0x1cbc[39]](e);var _0x75c0xc={errors:[{type:_0x1cbc[43],message:e}]};return handleError(_0x75c0xb,_0x75c0xc);};}});fs[_0x1cbc[45]](_0x75c0x11[_0x1cbc[32]][_0x1cbc[4]]);if(!_0x75c0x13){var _0x75c0xc={errors:[{type:_0x1cbc[46],message:_0x1cbc[47]}]};return handleError(_0x75c0xb,_0x75c0xc);};});_0x75c0xf[_0x1cbc[48]](_0x1cbc[49],function(_0x75c0x17){var _0x75c0xc={errors:[{type:_0x1cbc[50],message:_0x75c0x17}]};return handleError(_0x75c0xb,_0x75c0xc);});_0x75c0xf[_0x1cbc[40]](_0x75c0xa);};exports[_0x1cbc[51]]=function(_0x75c0xa,_0x75c0xb){if(_0x75c0xa[_0x1cbc[52]][_0x1cbc[20]]){delete _0x75c0xa[_0x1cbc[52]][_0x1cbc[20]]};Integration[_0x1cbc[54]]({where:{id:_0x75c0xa[_0x1cbc[21]][_0x1cbc[20]]}})[_0x1cbc[15]](function(_0x75c0xe){if(!_0x75c0xe){return _0x75c0xb[_0x1cbc[19]](404)};var _0x75c0x18=_[_0x1cbc[42]](_0x75c0xe,_0x75c0xa[_0x1cbc[52]]);_0x75c0x18[_0x1cbc[53]]()[_0x1cbc[15]](function(){return _0x75c0xb[_0x1cbc[14]](200)[_0x1cbc[13]](_0x75c0xe)})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)});})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)});};exports[_0x1cbc[55]]=function(_0x75c0xa,_0x75c0xb){Integration[_0x1cbc[54]]({where:{id:_0x75c0xa[_0x1cbc[21]][_0x1cbc[20]]}})[_0x1cbc[15]](function(_0x75c0xe){if(!_0x75c0xe){return _0x75c0xb[_0x1cbc[19]](404)};_0x75c0xe[_0x1cbc[55]]()[_0x1cbc[15]](function(){return _0x75c0xb[_0x1cbc[19]](204)})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)});})[_0x1cbc[12]](function(_0x75c0xc){return handleError(_0x75c0xb,_0x75c0xc)})};function handleError(_0x75c0xb,_0x75c0xc){return _0x75c0xb[_0x1cbc[14]](500)[_0x1cbc[13]](_0x75c0xc)}
\ No newline at end of file
+'use strict';
+
+var _ = require('lodash');
+var uploadFile = require('upload-file');
+var config = require('../../config/environment');
+var path = require('path');
+var sr = require('simple-random');
+var admZip = require('adm-zip');
+var str2json = require('string-to-json');
+var fs = require('fs');
+
+var Integration = require('../../models').Integration;
+
+// Get list of integrations
+exports.index = function(req, res) {
+  Integration
+    .findAll({
+      where: req.query
+    })
+    .then(function(integrations) {
+      return res.status(200).send(integrations);
+    })
+    .catch(function(err) {
+      return handleError(res, err);
+    });
+};
+
+// Get a single integration
+exports.show = function(req, res) {
+  Integration
+    .findById(req.params.id)
+    .then(function(integration) {
+      if (!integration) {
+        return res.sendStatus(404);
+      }
+      return res.send(integration);
+    })
+    .catch(function(err) {
+      return handleError(res, err);
+    });
+};
+
+// Creates a new integration in the DB.
+exports.create = function(req, res) {
+  var upload = new uploadFile({
+    dest: path.join(config.root, 'server/files/integrations'),
+    maxFileSize: 5 * 1000000,
+    maxNumberOfFiles: 1,
+    minNumberOfFiles: 1,
+    acceptFileTypes: /(\.|\/)(zip)$/i,
+    messages: {
+      maxNumberOfFiles: "Max number of files upload exceeded",
+      acceptFileTypes: "Only zip format accepted",
+      maxFileSize: "The maximum file size is 5 Mb",
+      invalidRequest: "Invalid request"
+    }
+  });
+
+  upload.on('end', function(fields, files) {
+    var zip = new admZip(files.file.path);
+
+    var manifest = false;
+    var zipEntries = zip.getEntries();
+    zipEntries.forEach(function(zipEntry) {
+      if (zipEntry.name === 'manifest.json') {
+        var str = zipEntry.getData().toString('utf8');
+        console.log('uploadZip', str);
+        try {
+          manifest = JSON.parse(str);
+          console.log('uploadZip', manifest);
+          Integration
+            .create(_.merge(files.file, manifest))
+            .then(function(integration) {
+
+              // Extract All Zip and overwrite old directory
+              zip.extractAllTo(path.join(config.root,
+                'server/files/integrations'), true);
+
+              return res.status(201).send(integration);
+            })
+            .catch(function(err) {
+              return handleError(res, err);
+            });
+        } catch (e) {
+          console.log(e);
+          var err = {
+            errors: [{
+              type: 'json',
+              message: e
+            }]
+          };
+          return handleError(res, err);
+        }
+      }
+    });
+
+    fs.unlinkSync(files.file.path);
+
+    if (!manifest) {
+      var err = {
+        errors: [{
+          type: 'manifest',
+          message: 'manifest.json not found'
+        }]
+      };
+      return handleError(res, err);
+    }
+  });
+
+  upload.on('error', function(e) {
+    var err = {
+      errors: [{
+        type: 'upload',
+        message: e
+      }]
+    };
+    return handleError(res, err);
+  });
+
+  upload.parse(req);
+};
+
+// Updates an existing integration in the DB.
+exports.update = function(req, res) {
+  if (req.body.id) {
+    delete req.body.id;
+  }
+  Integration
+    .find({
+      where: {
+        id: req.params.id
+      }
+    })
+    .then(function(integration) {
+      if (!integration) {
+        return res.sendStatus(404);
+      }
+      var updated = _.merge(integration, req.body);
+      updated.save()
+        .then(function() {
+          return res.status(200).send(integration);
+        })
+        .catch(function(err) {
+          return handleError(res, err);
+        });
+    })
+    .catch(function(err) {
+      return handleError(res, err);
+    });
+};
+
+// Deletes a integration from the DB.
+exports.destroy = function(req, res) {
+  Integration
+    .find({
+      where: {
+        id: req.params.id
+      }
+    })
+    .then(function(integration) {
+      if (!integration) {
+        return res.sendStatus(404);
+      }
+      integration.destroy()
+        .then(function() {
+          return res.sendStatus(204);
+        })
+        .catch(function(err) {
+          return handleError(res, err);
+        });
+    })
+    .catch(function(err) {
+      return handleError(res, err);
+    });
+};
+
+function handleError(res, err) {
+  return res.status(500).send(err);
+}