UNPKG

yf-fpm-server

Version:

yf fast-platform api server

73 lines (59 loc) 1.84 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _exception = require('../utils/exception.js'); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _debug = require('debug'); var _debug2 = _interopRequireDefault(_debug); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const debug = (0, _debug2.default)('yf-fpm-server:core.js'); const noMethodHandler = () => { return Promise.reject(_exception.E.System.NOT_METHOD); }; const versionUndefinedHandler = () => { return Promise.reject(_exception.E.System.VERSION_UNDEFINED); }; let getFunction = (method, v, bizModule) => { bizModule = bizModule || {}; if (!_lodash2.default.has(bizModule, v)) { return versionUndefinedHandler; } let path = method.split('.'); let obj = bizModule[v]; let handler = noMethodHandler; let hasFunction = true; for (let i in path) { if (!_lodash2.default.has(obj, path[i])) { hasFunction = false; break; } obj = obj[path[i]]; } if (hasFunction) { handler = obj; } return handler; }; exports.default = async (method, args, v, fpm, ctx) => { let handler = getFunction(method, v, fpm._biz_module); let hook = fpm._hook; try { let result = {}; if (_lodash2.default.isFunction(hook.runHook)) { let beforeResult = await hook.runHook('before_' + method, args, v, ctx); result = await handler(args, ctx, beforeResult); await hook.runHook('after_' + method, { input: args, result: result.data }, v, ctx); } else { result = await handler(args, ctx, []); } return result; } catch (err) { if (err.errno > 0) { err.errno = 0 - err.errno; } debug('Core execute error: %O', err); return Promise.reject(err); } };