class RJR::Messages::Compressed::Request

Constants

COMPRESSED

Public Class Methods

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

Public Instance Methods

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

  {'j' => 2.0,
   'i' => @msg_id,
   '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 37
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 47
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'],
                :id     => request['i'],
                :args   => converted}.merge(args))

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