class FlexCommerceApi::JsonApiClientExtension::StatusMiddleware
Public Instance Methods
call(environment)
click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/status_middleware.rb, line 4 def call(environment) request_env = environment.dup @app.call(environment).on_complete do |env| handle_status(env[:status], env, request_env) # look for meta[:status] if env[:body].is_a?(Hash) code = env[:body].fetch("meta", {}).fetch("status", 200).to_i handle_status(code, env, request_env) end end rescue Faraday::ConnectionFailed, Faraday::TimeoutError raise ::FlexCommerceApi::Error::ConnectionError, environment end
Protected Instance Methods
handle_status(code, env, request_environment)
click to toggle source
# File lib/flex_commerce_api/json_api_client_extension/status_middleware.rb, line 21 def handle_status(code, env, request_environment) case code when 200..399 when 400 raise ::FlexCommerceApi::Error::BadRequest.new request_environment, env when 403, 401 raise ::FlexCommerceApi::Error::AccessDenied.new request_environment, env when 404 raise ::FlexCommerceApi::Error::NotFound, env[:url] when 400..499 # some other error when 500..599 raise ::FlexCommerceApi::Error::InternalServer.new request_environment, env else raise ::FlexCommerceApi::Error::UnexpectedStatus.new(code, env[:url]) end end