class RJR::Messages::Compressed::Response
Public Class Methods
is_compressed_response_message?(message)
click to toggle source
# File lib/rjr/messages/compressed.rb, line 158 def self.is_compressed_response_message?(message) begin json = JSONParser.parse(message) json.has_key?('r') || json.has_key?('e') rescue Exception => e puts e.to_s false end end
is_response_message?(message)
click to toggle source
Calls superclass method
# File lib/rjr/messages/compressed.rb, line 168 def self.is_response_message?(message) is_compressed_response_message?(message) || super(message) end
new(args = {})
click to toggle source
# File lib/rjr/messages/compressed.rb, line 94 def initialize(args = {}) parse_args(args) end
Public Instance Methods
compressed_error_json()
click to toggle source
# File lib/rjr/messages/compressed.rb, line 180 def compressed_error_json {'e' => {'co' => @result.error_code, 'm' => @result.error_msg, 'cl' => @result.error_class}} end
compressed_success_json()
click to toggle source
# File lib/rjr/messages/compressed.rb, line 172 def compressed_success_json # XXX encapsulate in array & extract above so as to # guarantee to be able to be parsable JSON deflated = Zlib::Deflate.deflate([@result.result].to_json.to_s) encoded = Base64.encode64(deflated) {'r' => encoded} end
has_compressed_request?()
click to toggle source
# File lib/rjr/messages/compressed.rb, line 150 def has_compressed_request? !!@request && @request.class.const_defined?(:COMPRESSED) end
has_uncompressed_request?()
click to toggle source
# File lib/rjr/messages/compressed.rb, line 154 def has_uncompressed_request? !!@request && !@request.class.const_defined?(:COMPRESSED) end
to_json(*a)
click to toggle source
Calls superclass method
# File lib/rjr/messages/compressed.rb, line 186 def to_json(*a) return super(*a) if has_uncompressed_request? result_json = @result.success ? compressed_success_json : compressed_error_json response = {'j' => 2.0, 'i' => @msg_id}.merge(@headers). merge(result_json).to_json(*a) end
Private Instance Methods
parse_args(args)
click to toggle source
Calls superclass method
# File lib/rjr/messages/compressed.rb, line 100 def parse_args(args) args = Hash[args] @request = args[:request] if args[:message] message = args.delete(:message) parse_message(message, args) else super(args) end end
parse_compressed_result(response)
click to toggle source
# File lib/rjr/messages/compressed.rb, line 128 def parse_compressed_result(response) @result = Result.new @result.success = response.has_key?('r') @result.failed = !@result.success if @result.success decoded = Base64.decode64(response['r']) inflated = Zlib::Inflate.inflate(decoded) converted = JSONParser.parse(inflated).first @result.result = converted elsif response.has_key?('e') @result.error_code = response['e']['co'] @result.error_msg = response['e']['m'] @result.error_class = response['e']['cl'] end @result end
parse_message(message, args={})
click to toggle source
# File lib/rjr/messages/compressed.rb, line 112 def parse_message(message, args={}) @json_message = message response = JSONParser.parse(@json_message) if response.has_key?('r') || response.has_key?('e') result = parse_compressed_result(response) parse_args({:id => response['i'], :result => result}.merge(args)) else result = parse_result(response) parse_args({:id => response['id'], :result => result}.merge(args)) end end