Class: RJR::Messages::Compressed::Response

Inherits:
Uncompressed::Response
  • Object
show all
Defined in:
lib/rjr/messages/compressed.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Response

Returns a new instance of Response.



94
95
96
# File 'lib/rjr/messages/compressed.rb', line 94

def initialize(args = {})
  parse_args(args)
end

Class Method Details

.is_compressed_response_message?(message) ⇒ Boolean

Returns:

  • (Boolean)


158
159
160
161
162
163
164
165
166
# 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) ⇒ Boolean

Returns:

  • (Boolean)


168
169
170
# File 'lib/rjr/messages/compressed.rb', line 168

def self.is_response_message?(message)
  is_compressed_response_message?(message) || super(message)
end

Instance Method Details

#compressed_error_jsonObject



180
181
182
183
184
# 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_jsonObject



172
173
174
175
176
177
178
# 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?Boolean

Returns:

  • (Boolean)


150
151
152
# File 'lib/rjr/messages/compressed.rb', line 150

def has_compressed_request?
  !!@request && @request.class.const_defined?(:COMPRESSED)
end

#has_uncompressed_request?Boolean

Returns:

  • (Boolean)


154
155
156
# File 'lib/rjr/messages/compressed.rb', line 154

def has_uncompressed_request?
  !!@request && !@request.class.const_defined?(:COMPRESSED)
end

#to_json(*a) ⇒ Object



186
187
188
189
190
191
192
193
194
195
# 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