Class: PalavaMachine::ClientMessage

Inherits:
Object
  • Object
show all
Defined in:
lib/palava_machine/client_message.rb

Constant Summary collapse

RULES =
{
  info:          [],
  join_room:     [:room_id, :status],
  leave_room:    [],
  send_to_peer:  [:peer_id, :data],
  update_status: [:status],
}

Instance Method Summary collapse

Constructor Details

#initialize(message, connection_id = nil) ⇒ ClientMessage

Returns a new instance of ClientMessage.



15
16
17
18
19
20
21
22
23
24
# File 'lib/palava_machine/client_message.rb', line 15

def initialize(message, connection_id = nil)
  begin
    @_data = JSON.parse(message)
  rescue # TODO find exact json error to catch
    raise MessageParsingError, 'invalid message'
  end

  raise MessageParsingError, 'invalid message: not a hash' unless @_data.instance_of?(Hash)
  @connection_id = connection_id
end

Instance Method Details

#[](w) ⇒ Object



26
27
28
# File 'lib/palava_machine/client_message.rb', line 26

def [](w)
  @_data[w]
end

#argumentsObject



42
43
44
# File 'lib/palava_machine/client_message.rb', line 42

def arguments
  valid? && RULES[name].map{ |data_key| @_data[data_key.to_s] }
end

#connection_idObject



38
39
40
# File 'lib/palava_machine/client_message.rb', line 38

def connection_id
  @connection_id or raise MessageParsingError, 'connection id used but not set'
end

#nameObject



34
35
36
# File 'lib/palava_machine/client_message.rb', line 34

def name
  @name ||= @_data['event'] && @_data['event'].to_sym or raise(MessageParsingError, 'no event given')
end

#valid?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/palava_machine/client_message.rb', line 30

def valid?
  RULES.keys.include?(name) or raise MessageParsingError, 'unknown event'
end