Merge branch 'pkg_mgmt' into v1.1
[osm/UI.git] / skyquake / plugins / composer / routes.js
1 /*
2 *
3 * Copyright 2016 RIFT.IO Inc
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18 var express = require('express');
19 var router = express.Router();
20 var cors = require('cors');
21 var utils = require('../../framework/core/api_utils/utils.js')
22 var constants = require('../../framework/core/api_utils/constants.js');
23 var C = require('./api/composer.js');
24 var Composer = C.Composer;
25 var FileManager = C.FileManager;
26 var multer = require('multer');
27 var fs = require('fs');
28 var path = require('path');
29 var mkdirp = require('mkdirp');
30
31 var storage = multer.diskStorage({
32 // destination: 'upload/packages/',
33 destination: function(req, file, cb) {
34 var dir = constants.BASE_PACKAGE_UPLOAD_DESTINATION;
35 if (req.query['package_id']) {
36 dir += req.query['package_id'] + '/';
37 }
38 if (!fs.existsSync(dir)){
39 mkdirp(dir, function(err) {
40 if (err) {
41 console.log('Error creating folder for uploads. All systems FAIL!');
42 throw err;
43 }
44 cb(null, dir);
45 });
46 } else {
47 cb(null, dir);
48 }
49 },
50 filename: function (req, file, cb) {
51 if (req.query['package_id']) {
52 cb(null, file.originalname);
53 } else {
54 cb(null, Date.now() + '_' + file.fieldname + '_' + file.originalname);
55 }
56 },
57 // limits: {
58 // fieldNameSize: 100,
59 // fieldSize: 10000,
60 // fields: Infinity,
61 // fileSize: 10000,
62 // files: Infinity
63 // parts: Infinity
64 // headerPairs: 2000
65 // }
66 });
67
68
69 var upload = multer({
70 storage: storage
71 });
72
73
74 router.get('/api/catalog', cors(), function(req, res) {
75 Composer.get(req).then(function(data) {
76 utils.sendSuccessResponse(data, res);
77 }, function(error) {
78 utils.sendErrorResponse(error, res);
79 });
80 });
81 router.delete('/api/catalog/:catalogType/:id', cors(), function(req, res) {
82 Composer.delete(req).then(function(response) {
83 res.status(response.statusCode);
84 res.send({});
85 }, function(error) {
86 res.status(error.statusCode);
87 res.send(error.errorMessage);
88 });
89 });
90 router.post('/api/catalog/:catalogType', cors(), function(req, res) {
91 Composer.create(req).then(function(data) {
92 res.send(data);
93 }, function(error) {
94 res.status(error.statusCode);
95 res.send(error.errorMessage);
96 });
97 });
98 router.put('/api/catalog/:catalogType/:id', cors(), function(req, res) {
99 Composer.update(req).then(function(data) {
100 res.send(data);
101 }, function(error) {
102 res.status(error.statusCode);
103 res.send(error.errorMessage);
104 });
105 });
106 router.post('/upload', cors(), upload.single('package'), function (req, res, next) {
107 Composer.upload(req).then(function(data) {
108 utils.sendSuccessResponse(data, res);
109 }, function(error) {
110 utils.sendErrorResponse(error, res);
111 });
112 });
113 router.use('/upload', cors(), express.static('upload/packages'));
114
115 router.post('/update', cors(), upload.single('package'), function (req, res, next) {
116 Composer.update(req).then(function(data) {
117 utils.sendSuccessResponse(data, res);
118 }, function(error) {
119 utils.sendErrorResponse(error, res);
120 });
121 });
122 router.use('/update', cors(), express.static('upload/packages'));
123
124
125
126 router.post('/api/file-manager', cors(), upload.single('package'), function (req, res, next) {
127 Composer.addFile(req).then(function(data) {
128 utils.sendSuccessResponse(data, res);
129 }, function(error) {
130 utils.sendErrorResponse(error, res);
131 });
132 });
133
134 router.get('/api/file-manager', cors(), function(req, res) {
135 FileManager.get(req).then(function(data) {
136 utils.sendSuccessResponse(data, res);
137 }, function(error) {
138 utils.sendErrorResponse(error, res);
139 });
140 })
141 router.get('/api/file-manager/jobs/:id', cors(), function(req, res) {
142 FileManager.job(req).then(function(data) {
143 utils.sendSuccessResponse(data, res);
144 }, function(error) {
145 utils.sendErrorResponse(error, res);
146 });
147 });
148 router.delete('/api/file-manager', cors(), function(req, res) {
149 FileManager.get(req).then(function(data) {
150 utils.sendSuccessResponse(data, res);
151 }, function(error) {
152 utils.sendErrorResponse(error, res);
153 });
154 });
155
156 router.post('/api/package-export', cors(), function (req, res, next) {
157 Composer.exportPackage(req).then(function(data) {
158 utils.sendSuccessResponse(data, res);
159 }, function(error) {
160 utils.sendErrorResponse(error, res);
161 });
162 });
163
164 module.exports = router;