class PurpleAirApi::V1::RaiseHttpException
Handles any HTTP exceptions for 400 and 500 error codes
Attributes
response[RW]
Public Class Methods
new(app)
click to toggle source
Faraday syntax for implementing middleware
Calls superclass method
# File lib/purple_air_api/V1/raise_http_exception.rb, line 27 def initialize(app) super app @parser = nil end
Public Instance Methods
call(env)
click to toggle source
A switch statement which determines which error to raise depending on error code
# File lib/purple_air_api/V1/raise_http_exception.rb, line 8 def call(env) @app.call(env).on_complete do |response| self.response = response case response[:status].to_i when 400 raise ApiError.new(error_message, parsed_response[:error], response) when 403 raise ApiKeyError.new(error_message, parsed_response[:error], response) when 404 raise NotFoundError.new(error_message, parsed_response[:error], response) when 415 raise MissingJsonPayloadError.new(error_message, 'MissingJsonPayloadError', response) when 500 raise ServerError.new(error_message, 'ServerError', response) end end end
Private Instance Methods
error_message()
click to toggle source
# File lib/purple_air_api/V1/raise_http_exception.rb, line 36 def error_message parsed_response[:description] end
parsed_response()
click to toggle source
# File lib/purple_air_api/V1/raise_http_exception.rb, line 40 def parsed_response @parsed_response ||= FastJsonparser.parse(response[:body]) rescue FastJsonparser::ParseError unknown_error_message end
unknown_error_message()
click to toggle source
# File lib/purple_air_api/V1/raise_http_exception.rb, line 46 def unknown_error_message { description: 'Something went wrong in the request.' } end