UNPKG

backendless-coderunner

Version:
76 lines (66 loc) 2.07 kB
'use strict' const argsUtil = require('./args') /** * @typedef {Object} ExceptionWrapper * @property {String} ___jsonclass * @property {Number} code * @property {Number} httpStatusCode * @property {String} exceptionClass * @property {String} exceptionMessage */ /** * @param {String} requestId * @param {Object} context * @param {?Error|ExceptionWrapper|String} err * @param {*} args * @returns {Object} */ exports.invocationResult = function(requestId, context, err, args) { return { ___jsonclass : 'com.backendless.coderunner.commons.protocol.InvocationResult', requestId, httpResponseStatusCode: context.response && context.response.statusCode, httpResponseHeaders : context.response && context.response.headers, httpResponseCookies : context.response && context.response.cookies, arguments : args, exception : err && exports.exception(err), } } /** * @param {*} args * @returns {Array} */ exports.encodeArguments = function(args) { return args !== undefined ? argsUtil.encode(args) : [] } /** * @param {?Error|ExceptionWrapper|String} err * @returns {Object} */ exports.exception = function(err) { const errCode = typeof err.code === 'number' ? err.code : 0 const httpStatusCode = typeof err.httpStatusCode === 'number' ? err.httpStatusCode : -1 let message = err.exceptionMessage || err.message || err if (typeof message !== 'string') { message = JSON.stringify(message) } return { ___jsonclass : err.___jsonclass || 'com.backendless.commons.exception.ExceptionWrapper', code : errCode, httpStatusCode : httpStatusCode, exceptionClass : err.exceptionClass || 'java.lang.Exception', exceptionMessage: message } } /** * @param {?Error|ExceptionWrapper|String} err * @param {?*=} result * @returns {Object} */ exports.executionResult = function(err, result) { return { ___jsonclass: 'com.backendless.servercode.ExecutionResult', result : result, exception : err && exports.exception(err) } }