service-model
Version:
An object oriented web service framework inspired by Windows Communication Foundation.
47 lines (46 loc) • 1.75 kB
JavaScript
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;