Method: MLS#handle_response

Defined in:
lib/mls.rb

#handle_response(response, *valid_response_codes) ⇒ Object

Raise an MLS::Exception based on the response_code, unless the response_code is include in the valid_response_codes Array

Paramaters
  • response - The Net::HTTP::Response object

  • valid_response_codes - An Array, Integer, or Range. If it’s Array the Array can include both Integers or Ranges.

Return Value

If an exception is not raised the response is returned

Examples:

#!ruby
MLS.handle_response(<Net::HTTP::Response @code=200>) # => <Net::HTTP::Response @code=200>

MLS.handle_response(<Net::HTTP::Response @code=404>) # => raises MLS::Exception::NotFound

MLS.handle_response(<Net::HTTP::Response @code=500>) # => raises MLS::Exception

MLS.handle_response(<Net::HTTP::Response @code=404>, 404) # => <Net::HTTP::Response @code=404>

MLS.handle_response(<Net::HTTP::Response @code=500>, 404, 500) # => <Net::HTTP::Response @code=500>

MLS.handle_response(<Net::HTTP::Response @code=405>, 300, 400..499) # => <Net::HTTP::Response @code=405>

MLS.handle_response(<Net::HTTP::Response @code=405>, [300, 400..499]) # => <Net::HTTP::Response @code=405>


364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
# File 'lib/mls.rb', line 364

def handle_response(response, *valid_response_codes)
  if response['X-42Floors-API-Version-Deprecated']
    logger.warn("DEPRECATION WARNING: API v#{API_VERSION} is being phased out")
  end
  
  code = response.code.to_i
  valid_response_codes.flatten!
  valid_response_codes << (200..299)
  
  if !valid_response_codes.detect{|i| i.is_a?(Range) ? i.include?(code) : i == code}
    case code
    when 400
      raise MLS::Exception::BadRequest, response.body
    when 401
      raise MLS::Exception::Unauthorized, response.body
    when 404, 410
      raise MLS::Exception::NotFound
    when 422
      raise MLS::Exception::ApiVersionUnsupported, response.body
    when 503
      raise MLS::Exception::ServiceUnavailable, response.body
    when 300..599
      raise MLS::Exception, code
    end
  end
  
  response
end