class RJR::Messages::Compressed::Notification

Public Class Methods

is_compressed_notification_message?(message) click to toggle source
# File lib/rjr/messages/compressed.rb, line 234
def self.is_compressed_notification_message?(message)
  begin
     parsed = JSONParser.parse(message)
     parsed.has_key?('m') && !parsed.has_key?('i')
  rescue Exception => e
    false
  end
end
is_notification_message?(message) click to toggle source
Calls superclass method
# File lib/rjr/messages/compressed.rb, line 243
def self.is_notification_message?(message)
  is_compressed_notification_message?(message) || super(message)
end
new(args = {}) click to toggle source
# File lib/rjr/messages/compressed.rb, line 199
def initialize(args = {})
  parse_args(args)
end

Public Instance Methods

to_json(*a) click to toggle source
# File lib/rjr/messages/compressed.rb, line 247
def to_json(*a)
  deflated = Zlib::Deflate.deflate(@jr_args.to_json.to_s)
  encoded  = Base64.encode64(deflated)

  {'j' => 2.0,
   'm' => @jr_method,
   'p' => encoded}.merge(@headers).to_json(*a)
end

Private Instance Methods

parse_args(args) click to toggle source
Calls superclass method
# File lib/rjr/messages/compressed.rb, line 205
def parse_args(args)
  args = Hash[args]
  if args[:message]
    message = args.delete(:message)
    parse_message(message, args)
  else
    super(args)
  end
end
parse_message(message, args={}) click to toggle source
# File lib/rjr/messages/compressed.rb, line 215
def parse_message(message, args={})
  @json_message = message
  request       = JSONParser.parse(@json_message)

  if request.has_key?('m')
    decoded   = Base64.decode64(request['p'])
    inflated  = Zlib::Inflate.inflate(decoded)
    converted = JSONParser.parse(inflated)
    parse_args({:method => request['m'],
                :args   => converted}.merge(args))

  else
    parse_args({:method => request['method'],
                :args   => request['params']}.merge(args))
  end
end