Sha256: 56729220df16c00f6d974ae8da5eecedcfbe5c36d75d0f1110e1dfee914c744c

Contents?: true

Size: 1.16 KB

Versions: 21

Compression:

Stored size: 1.16 KB

Contents

module RockRMS
  class Error < StandardError; end
  class BadRequest < Error; end
  class Forbidden < Error; end
  class GatewayTimeout < Error; end
  class InternalServerError < Error; end
  class NotFound < Error; end
  class ServiceUnavailable < Error; end
  class Unauthorized < Error; end
end

require 'faraday'
module FaradayMiddleware
  class RockRMSErrorHandler < Faraday::Response::Middleware
    ERROR_STATUSES = 400..600

    def on_complete(env)
      case env[:status]
      when 400
        raise RockRMS::BadRequest, error_message(env)
      when 401
        raise RockRMS::Unauthorized, error_message(env)
      when 403
        raise RockRMS::Forbidden, error_message(env)
      when 404
        raise RockRMS::NotFound, error_message(env)
      when 500
        raise RockRMS::InternalServerError, error_message(env)
      when 503
        raise RockRMS::ServiceUnavailable, error_message(env)
      when 504
        raise RockRMS::GatewayTimeout, error_message(env)
      when ERROR_STATUSES
        raise RockRMS::Error, error_message(env)
      end
    end

    private

    def error_message(env)
      "#{env[:status]}: #{env[:url]} #{env[:body]}"
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
rock_rms-5.18.0 lib/rock_rms/error.rb
rock_rms-5.17.0 lib/rock_rms/error.rb
rock_rms-5.16.0 lib/rock_rms/error.rb
rock_rms-5.15.0 lib/rock_rms/error.rb
rock_rms-5.14.0 lib/rock_rms/error.rb
rock_rms-5.13.0 lib/rock_rms/error.rb
rock_rms-5.12.0 lib/rock_rms/error.rb
rock_rms-5.11.0 lib/rock_rms/error.rb
rock_rms-5.10.0 lib/rock_rms/error.rb
rock_rms-5.9.2 lib/rock_rms/error.rb
rock_rms-5.9.1 lib/rock_rms/error.rb
rock_rms-5.9.0 lib/rock_rms/error.rb
rock_rms-5.8.1 lib/rock_rms/error.rb
rock_rms-5.8.0 lib/rock_rms/error.rb
rock_rms-5.7.1 lib/rock_rms/error.rb
rock_rms-5.7.0 lib/rock_rms/error.rb
rock_rms-5.6.0 lib/rock_rms/error.rb
rock_rms-5.5.0 lib/rock_rms/error.rb
rock_rms-5.4.0 lib/rock_rms/error.rb
rock_rms-5.3.0 lib/rock_rms/error.rb