UNPKG

whistle.capimock

Version:

连接capi的whistle插件

82 lines (64 loc) 1.8 kB
/* eslint-disable no-console */ var express = require('express'); var app = express(); var dataMgr = require('./data-mgr'); var util = require('./util'); app.use(function (req, res, next) { req.on('error', util.noop); res.on('error', util.noop); next(); }); // v3通用响应函数 function sendResponse(res, code, data) { var responseData = { 'code': code, 'data': { 'data': { 'Response': data } } }; res.json(responseData); } app.use(function (req, res) { var tableList = dataMgr.getList(); var allCheckLists = tableList.reduce((accumulator, current) => { return accumulator.concat(current.checkList) }, []) var inputStr = req.url; var start = inputStr.indexOf('cmd=') + 4; var end = inputStr.indexOf('&', start); var extractedContent = inputStr.substring(start, end); const is = allCheckLists.includes('/' + extractedContent); if (!is) { req.passThrough(); return; } const foundObject = tableList.find(table => { return table.list.some(item => item.key === '/' + extractedContent) }); const filterList = foundObject.list.find(item => item.key === '/' + extractedContent); function extractValues(obj) { if (typeof obj !== 'object' || obj === null) { return obj; } if (Array.isArray(obj)) { return obj.map(item => extractValues(item)); } const newObj = {}; for (const key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = extractValues(obj[key]); } } if ('value' in newObj) { return newObj.value; } return newObj; } const responseData = extractValues(filterList.properties) sendResponse(res, 0, responseData); }); module.exports = function startServer(server, options) { server.on('request', app); };