UNPKG

service-model

Version:

An object oriented web service framework inspired by Windows Communication Foundation.

47 lines (46 loc) 1.75 kB
var message_1 = require("../message"); var httpStatusCode_1 = require("../httpStatusCode"); /** * @hidden */ var RpcMessageFormatter = (function () { function RpcMessageFormatter(operation) { if (!operation) { throw new Error("Missing required argument 'operation'."); } this._operationName = operation.name; var parameters = operation.method.parameters || []; // do not include callback in parameter count var count = parameters.length - 1; this._parameterNames = new Array(count); for (var i = 0; i < count; i++) { this._parameterNames[i] = parameters[i].name; } } RpcMessageFormatter.prototype.deserializeRequest = function (message, callback) { var args = message.body[this._operationName]; if (args == null) { callback(new Error("Missing root element '" + this._operationName + "'.")); return; } if (Array.isArray(args)) { if (args.length != this._parameterNames.length) { callback(new Error("Wrong number of arguments.")); return; } } else { var obj = args; args = new Array(this._parameterNames.length); for (var i = 0; i < this._parameterNames.length; i++) { args[i] = obj[this._parameterNames[i]]; } } callback(null, args); }; RpcMessageFormatter.prototype.serializeReply = function (result, callback) { callback(null, message_1.Message.createReply(httpStatusCode_1.HttpStatusCode.Ok, { response: result })); }; return RpcMessageFormatter; })(); exports.RpcMessageFormatter = RpcMessageFormatter;