X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FUI.git;a=blobdiff_plain;f=skyquake%2Fplugins%2Fcomposer%2Froutes.js;h=b3641aa22fc5e28a5ad4d5addf30f0fcab4bbfc0;hp=af67bfa4d720ad7d3921f50ff69fac10711ba5e0;hb=e1c7c12af6f1d5f6fc69329251e47f2abf7fd4f1;hpb=e29efc315df33d546237e270470916e26df391d6 diff --git a/skyquake/plugins/composer/routes.js b/skyquake/plugins/composer/routes.js index af67bfa4d..b3641aa22 100644 --- a/skyquake/plugins/composer/routes.js +++ b/skyquake/plugins/composer/routes.js @@ -1,5 +1,5 @@ /* - * + * * Copyright 2016 RIFT.IO Inc * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,10 +15,63 @@ * limitations under the License. * */ -var router = require('express').Router(); +var express = require('express'); +var router = express.Router(); var cors = require('cors'); var utils = require('../../framework/core/api_utils/utils.js') -var Composer = require('./api/composer.js'); +var constants = require('../../framework/core/api_utils/constants.js'); +var C = require('./api/composer.js'); +var Composer = C.Composer; +var FileManager = C.FileManager; +var PackageManager = C.PackageManager; +var multer = require('multer'); +var fs = require('fs'); +var path = require('path'); +var mkdirp = require('mkdirp'); + +var storage = multer.diskStorage({ + // destination: 'upload/packages/', + destination: function(req, file, cb) { + var dir = constants.BASE_PACKAGE_UPLOAD_DESTINATION; + if (req.query['package_id']) { + dir += req.query['package_id'] + '/'; + } + if (!fs.existsSync(dir)){ + mkdirp(dir, function(err) { + if (err) { + console.log('Error creating folder for uploads. All systems FAIL!'); + throw err; + } + cb(null, dir); + }); + } else { + cb(null, dir); + } + }, + filename: function (req, file, cb) { + if (req.query['package_id']) { + cb(null, file.originalname); + } else { + cb(null, Date.now() + '_' + file.fieldname + '_' + file.originalname); + } + }, + // limits: { + // fieldNameSize: 100, + // fieldSize: 10000, + // fields: Infinity, + // fileSize: 10000, + // files: Infinity + // parts: Infinity + // headerPairs: 2000 + // } +}); + + +var upload = multer({ + storage: storage +}); + + router.get('/api/catalog', cors(), function(req, res) { Composer.get(req).then(function(data) { utils.sendSuccessResponse(data, res); @@ -44,7 +97,7 @@ router.post('/api/catalog/:catalogType', cors(), function(req, res) { }); }); router.put('/api/catalog/:catalogType/:id', cors(), function(req, res) { - Composer.update(req).then(function(data) { + Composer.updateSave(req).then(function(data) { res.send(data); }, function(error) { res.status(error.statusCode); @@ -52,4 +105,76 @@ router.put('/api/catalog/:catalogType/:id', cors(), function(req, res) { }); }); +router.post('/api/file-manager', cors(), upload.single('package'), function (req, res, next) { + FileManager.addFile(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); + +router.get('/api/file-manager', cors(), function(req, res) { + FileManager.get(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}) +router.get('/api/file-manager/jobs/:id', cors(), function(req, res) { + FileManager.job(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); +router.delete('/api/file-manager', cors(), function(req, res) { + FileManager.get(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); + +// Catalog operations via package manager + +router.post('/upload', cors(), upload.single('package'), function (req, res, next) { + PackageManager.upload(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); +router.use('/upload', cors(), express.static('upload/packages')); + +router.post('/update', cors(), upload.single('package'), function (req, res, next) { + PackageManager.update(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); +router.use('/update', cors(), express.static('upload/packages')); + +router.post('/api/package-export', cors(), function (req, res, next) { + PackageManager.export(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); +router.post('/api/package-copy', cors(), function (req, res, next) { + PackageManager.copy(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); +router.get('/api/package-manager/jobs/:id', cors(), function (req, res, next) { + PackageManager.getJobStatus(req).then(function(data) { + utils.sendSuccessResponse(data, res); + }, function(error) { + utils.sendErrorResponse(error, res); + }); +}); + module.exports = router;