UNPKG

whistle.capimock

Version:

连接capi的whistle插件

76 lines (58 loc) 1.9 kB
/* eslint-disable no-console */ var path = require('path'); var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var util = require('./util'); var APP_ROOT = util.formatPath(path.join(__dirname, '../app')); var APP_CGI_ROOT = util.formatPath(path.join(APP_ROOT, 'cgi-bin')); var dataMgr = require('./data-mgr'); var CGI_MODULES = util.loadModulesSync(APP_CGI_ROOT); var parseTsFile = require('./schema'); app.use(function(req, res, next) { req.on('error', util.noop); res.on('error', util.noop); next(); }); app.use(bodyParser.urlencoded({ extended: true, limit: '50mb'})); app.use(bodyParser.json({ limit: '50mb' })); app.use(express.json()); app.post('/api/file', function (req, res) { var result = parseTsFile(req.body.filePath); res.json(result); }); app.post('/file/edit', function (req, res) { dataMgr.setTplValue(req.body.name, req.body.value); res.json({ec: 0, em: 'success'}); }); app.post('/file/add', function (req, res) { const result = dataMgr.addTpl(req.body); if (result) { res.json({ec: 1, em: 'success', message: result}) } else { res.json({ec: 0, em: 'success'}); } }); app.post('/file/delete', function (req, res) { if (req.body.name) { dataMgr.removeTpl(req.body); } res.json({ec: 0, em: 'success'}); }); app.all('/cgi-bin/*', function(req, res) { if (req.headers.origin) { res.setHeader('Access-Control-Allow-Origin', req.headers.origin); res.setHeader('Access-Control-Allow-Credentials', true); } var controller = CGI_MODULES[APP_ROOT + req.url.replace(/\?.*$/, '')]; try { this.dataMgr = dataMgr; controller.call(this, req, res); } catch(e) { res.status(500).end(e.stack); } }); app.use(express.static(path.join(__dirname, '../app/public'))); module.exports = function startUIServer(server, options) { server.on('request', app); };