UNPKG

rapnc

Version:

Node client for RAP 1.0

132 lines (112 loc) 3.47 kB
// 需要确定JSON-Schema的格式 // 是否需要这玩意儿? var mocker = require('./toMockJs'); var types = require('./types'); var requestTypeMapper = { 1: 'GET', 2: 'POST' }; function fillToObject(params, obj) { if (params) { params.forEach(function(param) { obj['_' + param.id + '_'] = param; //param.prop = param.identifier; delete param.identifier; if (param.remark // 应该在params里就已经显示这些信息了 && (param.remark.indexOf('@mock=') == 0 || param.remark.indexOf('@value=') == 0 )) { //param.mock = param.remark.split('@mock=')[1]; delete param.remark; } if (param.data_type) { param.type = param.data_type; delete param.data_type; } //param.meaning = param.name; //delete param.name; delete param.id; for(var prop in param) { if (param[prop] === null || param[prop] === '') { delete param[prop]; } } if (param.params) { fillToObject(param.params, obj); delete param.params; } }) } } exports.dbToSchema = function(data) { var actions = data.actions; data.paramDetails = {}; for (var i = actions.length - 1; i >= 0; i--) { var action = actions[i]; action.action = action.request_url; action.method = requestTypeMapper[action.request_type || 1]; delete action.request_type; delete action.request_url; var request = mocker.getMockjsRules(action, 'requestParams'); action.request = {}; if (request) { action.request.params = request; } var response = mocker.getMockjsRules(action); action.response = {}; if (response) { action.response.params = response; } fillToObject(action.requestParams, data.paramDetails) delete action.requestParams; fillToObject(action.responseParams, data.paramDetails) delete action.responseParams; }; data.meta = { version: '0.1', rap: '1.0' } data.errorHandlers = { } return data; }; exports.schemaToDb = function(data) { }; function cleanRapIds(params, obj) { for(var prop in params) { var cleaned = prop.replace(/\|_\d+_/, ''); var value = params[prop]; if (types.isObject(value)) { obj[cleaned] = cleanRapIds(value, {}); continue; } else if (types.isArray(value) && value.length == 1 && types.isObject(value[0])) { obj[cleaned] = [cleanRapIds(value[0], {})] continue; } obj[cleaned] = params[prop]; } return obj; } /* console.log(cleanRapIds({ "code|_14308_": "1", "data|_14309_": { "b|_14310_": "1", "a|_14311_": "[\"1\", \"2\", \"3\"]", "c|_14314_": "test2222", "e|_14316_": "1" }, "data2": [{ "a|1|_321_": ['1', '2'], "b|_23132312_": "2", }], "msg|_14313_": "1" }, {})); */ exports.schemaToMockjs = function(action) { if (!action || !action.response || !action.response.params) { return; } var params = action.response.params; params = cleanRapIds(params, {}); return params; };