/*
- *
+ *
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* 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 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);
});
});
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);
res.send(error.errorMessage);
});
});
+router.post('/upload', cors(), upload.single('package'), function (req, res, next) {
+ Composer.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) {
+ Composer.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/file-manager', cors(), upload.single('package'), function (req, res, next) {
+ Composer.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);
+ });
+});
+
+router.post('/api/package-export', cors(), function (req, res, next) {
+ Composer.exportPackage(req).then(function(data) {
+ utils.sendSuccessResponse(data, res);
+ }, function(error) {
+ utils.sendErrorResponse(error, res);
+ });
+});
module.exports = router;