var uuid = require('node-uuid') var wire = require('./') var wireutil = { global: '*ALL' , makePrivateChannel: function() { return uuid.v4(null, new Buffer(16)).toString('base64') } , toDeviceStatus: function(type) { return wire.DeviceStatus[{ device: 'ONLINE' , emulator: 'ONLINE' , unauthorized: 'UNAUTHORIZED' , offline: 'OFFLINE' }[type]] } , toDeviceRequirements: function(requirements) { return Object.keys(requirements).map(function(name) { var item = requirements[name] return new wire.DeviceRequirement( name , item.value , wire.RequirementType[item.match.toUpperCase()] ) }) } , envelope: function(message) { return new wire.Envelope(message.$code, message.encode()).encodeNB() } , transaction: function(channel, message) { return new wire.Envelope( message.$code , message.encode() , channel ) .encodeNB() } , reply: function(source) { var seq = 0 return { okay: function(data, body) { return wireutil.envelope(new wire.TransactionDoneMessage( source , seq++ , true , data === null ? null : (data || 'success') , body ? JSON.stringify(body) : null )) } , fail: function(data, body) { return wireutil.envelope(new wire.TransactionDoneMessage( source , seq++ , false , data || 'fail' , body ? JSON.stringify(body) : null )) } , progress: function(data, progress) { return wireutil.envelope(new wire.TransactionProgressMessage( source , seq++ , data , ~~progress )) } } } } module.exports = wireutil