UNPKG

diffusion

Version:

Diffusion JavaScript client

38 lines (31 loc) 1.54 kB
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;