1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- var messageOptions = require("./message-options");
- function Message(raw) {
- if (!(this instanceof Message)) {
- return new Message(raw);
- }
- this.params = cleanParams(raw || {});
- }
- function cleanParams(raw) {
- var params = {};
- Object.keys(raw).forEach(function(param) {
- if(messageOptions[param]) {
- params[param] = raw[param];
- }
- });
- return params;
- }
- Message.prototype.addNotification = function() {
- return handleParamSet.call(this, arguments, "notification");
- };
- function handleParamSet(args, paramType) {
- if(args.length == 1) {
- return setParam.call(this, paramType, args[0]);
- }
- if(args.length == 2) {
- return addParam.call(this, paramType, args[0], args[1]);
- }
- throw new Error("Invalid number of arguments given to for setting " + paramType + " (" + args.length + ")");
- }
- function setParam(paramType, obj) {
- if (typeof obj === 'object' && Object.keys(obj).length > 0) {
- this.params[paramType] = obj;
- }
- }
- function addParam(paramType, key, value) {
- if(!this.params[paramType]) {
- this.params[paramType] = {};
- }
- return this.params[paramType][key] = value;
- }
- Message.prototype.addData = function() {
- return handleParamSet.call(this, arguments, "data");
- };
- Message.prototype.toJson = function() {
- var json = {};
- Object.keys(this.params).forEach(function(param) {
- var optionDescription = messageOptions[param];
- if(!optionDescription) {
- return;
- }
- var key = optionDescription.__argName || param;
- json[key] = this.params[param];
- }.bind(this));
- return json;
- };
- /** DEPRECATED */
- Message.prototype.addDataWithKeyValue = function (key, value) {
- console.warn("Message#addDataWithKeyValue has been deprecated. Please use Message#addData instead.");
- this.addData(key, value);
- };
- Message.prototype.addDataWithObject = function (obj) {
- console.warn("Message#addDataWithObject has been deprecated. Please use Message#addData instead.");
- this.addData(obj);
- };
- /** END DEPRECATED */
- module.exports = Message;
|