diffusion
Version:
Diffusion JavaScript client
38 lines (31 loc) • 1.54 kB
JavaScript
var TopicPermission = require('features/security').TopicPermission;
var GlobalPermission = require('features/security').GlobalPermission;
var Converter = require('serialisers/enum-converter');
var curryR = require('util/function').curryR;
var Codec = require('io/codec');
// Spice up our code by curring read/write functions with specific permission enums
var writeGlobalPerm = curryR(Converter.write, GlobalPermission);
var writeTopicPerm = curryR(Converter.write, TopicPermission);
var readGlobalPerm = curryR(Converter.read, GlobalPermission);
var readTopicPerm = curryR(Converter.read, TopicPermission);
var writeTopicPerms = curryR(Codec.writeCollection, writeTopicPerm);
var readTopicPerms = curryR(Codec.readCollection, readTopicPerm);
var serialiser = {
read : function(input) {
return {
name : Codec.readString(input),
global : Codec.readCollection(input, readGlobalPerm),
default : Codec.readCollection(input, readTopicPerm),
topic : Codec.readDictionary(input, readTopicPerms),
roles : Codec.readCollection(input, Codec.readString)
};
},
write : function(output, role) {
Codec.writeString(output, role.name);
Codec.writeCollection(output, role.global, writeGlobalPerm);
Codec.writeCollection(output, role.default, writeTopicPerm);
Codec.writeDictionary(output, role.topic, writeTopicPerms);
Codec.writeCollection(output, role.roles, Codec.writeString);
}
};
module.exports = serialiser;