¿Cómo puedo manejar los errores con HTTParty?

Estoy trabajando en una aplicación Rails utilizando HTTParty para realizar solicitudes HTTP. ¿Cómo puedo manejar los errores de HTTP con HTTParty? Específicamente, necesito capturar HTTP 502 y 503 y otros errores como la conexión rechazada y los errores de tiempo de espera.

Una instancia de HTTParty :: Response tiene un atributo de code que contiene el código de estado de la respuesta HTTP. Se da como un número entero. Entonces, algo como esto:

 response = HTTParty.get('http://twitter.com/statuses/public_timeline.json') case response.code when 200 puts "All good!" when 404 puts "O noes not found!" when 500...600 puts "ZOMG ERROR #{response.code}" end 

Esta respuesta aborda los fallos de conexión. Si no se encuentra una URL, el código de estado no te ayudará. Rescátalo así:

  begin HTTParty.get('http://google.com') rescue HTTParty::Error # don´t do anything / whatever rescue StandardError # rescue instances of StandardError, # ie Timeout::Error, SocketError etc end 

Para más información ver: este tema github.

También puede utilizar métodos de predicado tan útiles como el success? o bad_gateway? De este modo:

 response = HTTParty.post(uri, options) p response.success? 

La lista completa de posibles respuestas se puede encontrar en Rack::Utils::SYMBOL_TO_STATUS_CODE constant.