Class: PagerDuty::Connection::RaiseApiErrorOnNon200

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/pager_duty/connection.rb

Instance Method Summary collapse

Instance Method Details

#call(env) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/pager_duty/connection.rb', line 60

def call(env)
  response = @app.call env
  unless [200, 201, 204].include?(response.status)
    url = response.env[:url].to_s
    message = "Got HTTP #{response.status}: #{response.reason_phrase}\nFrom #{url}"

    if error = response.body
      begin
        # TODO May Need to check error.errors too
        message += "\n#{JSON.parse(error)}"
      rescue JSON::ParserError
        message += "\n#{error}"
      end
    end
    raise ApiError, message
  else
    response
  end
end