lib/datasift.rb in datasift-3.5.0 vs lib/datasift.rb in datasift-3.5.1
- old
+ new
@@ -228,12 +228,18 @@
process_client_error(e)
rescue RestClient::ExceptionWithResponse => e
begin
code = e.http_code
body = e.http_body
+ error = nil
if code && body
- error = MultiJson.load(body)
+ begin
+ error = MultiJson.load(body)
+ rescue MultiJson::ParseError
+ # In cases where we receive 502 responses, Nginx may send HTML rather than JSON
+ error = body
+ end
response_on_error = {
:data => nil,
:datasift => {
X_RATELIMIT_LIMIT => e.response.headers[:x_ratelimit_limit],
X_RATELIMIT_REMAINING => e.response.headers[:x_ratelimit_remaining],
@@ -301,9 +307,13 @@
raise UnsupportedMediaTypeError.new(code, body, response)
when 422
raise UnprocessableEntityError.new(code, body, response)
when 429
raise TooManyRequestsError.new(code, body, response)
+ when 500
+ raise InternalServerError.new(code, body, response)
+ when 502
+ raise BadGatewayError.new(code, body, response)
when 503
raise ServiceUnavailableError.new(code, body, response)
when 504
raise GatewayTimeoutError.new(code, body, response)
else