blob: 422bcf962e6c08313dc63e87cc48d9ad0634ee15 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
(function () {
"use strict";
var bodyParser = require('body-parser'),
express = require('express'),
mockData = require('./express-data/mockData.js'),
server = express(),
PORT = 3000;
server.use('/', express.static(__dirname + '/dist'));
server.use(bodyParser());
server.use(function (req, res, next) {
if (req.is('text/*')) {
req.text = '';
req.setEncoding('utf8');
req.on('data', function (chunk) { req.text += chunk; });
req.on('end', next);
} else {
next();
}
});
server.get('/api/entities/list/:type', function (req, res) {
var type = req.params.type;
res.json(mockData.entitiesList[type]);
});
server.get('/api/entities/definition/:type/:name', function(req, res) {
var type = req.params.type.toUpperCase(),
name = req.params.name;
if (mockData.definitions[type][name]) {
res.send(200, mockData.definitions[type][name]);
} else {
res.send(404, "not found");
}
});
server.post('/api/entities/submit/:type', function (req, res) {
var type = req.params.type.toUpperCase(),
text = req.text,
name,
indexInArray,
responseSuccessMessage,
responseFailedMessage,
initialIndex = text.indexOf("name") + 6,
finalIndex = getFinalIndexOfName(),
i;
function getFinalIndexOfName () {
for (i = initialIndex; i < text.length; i++) {
if (text[i] === '"' || text[i] === "'") {
return i;
}
}
}
name = text.slice(initialIndex, finalIndex);
responseSuccessMessage = {"status": "SUCCEEDED", "message": "default/successful (" + type + ") " + name + "\n\n","requestId":"default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"};
responseFailedMessage = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?><result><status>FAILED</status><message>(' + type + ') '+ name +' already registered with configuration store. Can\'t be submitted again. Try removing before submitting.</message><requestId>586fffcd-10c1-4975-8dda-4b34a712f2f4</requestId></result>';
if (!mockData.definitions[type][name]) {
mockData.definitions[type][name] = text;
mockData.entitiesList[type.toLowerCase()].entity.push(
{"type": type, "name": name, "status": "SUBMITTED"}
);
res.send(200, responseSuccessMessage);
} else {
res.send(404, responseFailedMessage);
}
});
server.post('/api/entities/schedule/:type/:name', function (req, res) {
var type = req.params.type.toLowerCase(),
name = req.params.name,
indexInArray = mockData.findByNameInList(type, name),
responseMessage = {
"status": "SUCCEEDED",
"message": "default/" + name + "(" + type + ") scheduled successfully\n",
"requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
};
mockData.entitiesList[type].entity[indexInArray].status = "RUNNING";
res.json(200, responseMessage);
});
server.post('/api/entities/suspend/:type/:name', function (req, res) {
var type = req.params.type.toLowerCase(),
name = req.params.name,
indexInArray = mockData.findByNameInList(type, name),
responseMessage = {
"status": "SUCCEEDED",
"message": "default/" + name + "(" + type + ") suspended successfully\n",
"requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
};
mockData.entitiesList[type].entity[indexInArray].status = "SUSPENDED";
res.json(200, responseMessage);
});
server.post('/api/entities/resume/:type/:name', function (req, res) {
var type = req.params.type.toLowerCase(),
name = req.params.name,
indexInArray = mockData.findByNameInList(type, name),
responseMessage = {
"status": "SUCCEEDED",
"message": "default/" + name + "(" + type + ") resumed successfully\n",
"requestId": "default/546cbe05-2cb3-4e5c-8e7a-b1559d866c99\n"
};
mockData.entitiesList[type].entity[indexInArray].status = "RUNNING";
res.json(200, responseMessage);
});
server.delete('/api/entities/delete/:type/:name', function (req, res) {
var type = req.params.type,
name = req.params.name,
responseMessage = {
"status": "SUCCEEDED",
"message": "falcon/default/" + name + "(" + type + ")removed successfully (KILLED in ENGINE)\n\n",
"requestId": "falcon/default/13015853-8e40-4923-9d32-6d01053c31c6\n\n"
},
indexInArray = mockData.findByNameInList(type, name);
mockData.entitiesList[type].entity.splice(indexInArray, 1);
res.json(200, responseMessage);
});
server.listen(PORT, function () {
console.log('Dev server listening on port ' + PORT);
});
}());