class Firepush::Message

Attributes

extra[R]

TODO: handle extra data in better way.

message_types[R]
recipient[R]

Public Class Methods

new(msg) click to toggle source

@param msg [Hash] @see lib/firepush/{recipient/*,message_types}.rb @raise [ArgumentError]

# File lib/firepush/message.rb, line 16
def initialize(msg)
  msg = msg.dup

  args = {}
  Recipient::TYPES.each do |type|
    args[type] = msg.delete(type) if msg.key?(type)
  end
  @recipient = Recipient::Builder.build(args)

  args.clear
  MessageType::TYPES.each do |type|
    args[type] = msg.delete(type) if msg.key?(type)
  end
  @message_types = MessageTypes.new(args)

  @extra = msg
end

Public Instance Methods

to_json() click to toggle source

@return [String]

# File lib/firepush/message.rb, line 35
def to_json
  ::JSON.generate(message: message)
end
valid?() click to toggle source

@return [Boolean]

# File lib/firepush/message.rb, line 40
def valid?
  recipient.valid? && message_types.valid?
end

Private Instance Methods

message() click to toggle source

@private @return [Hash]

# File lib/firepush/message.rb, line 48
def message
  message_types.message.merge({
    recipient.key => recipient.value
  }.merge(extra))
end