Sha256: a78ac6e2ea0924b5dfec8532fff608f29a06a6af67f82b0cb8b57b27b386e40b

Contents?: true

Size: 924 Bytes

Versions: 3

Compression:

Stored size: 924 Bytes

Contents

require 'faraday'
require 'octokit/error'

module Octokit
  # Faraday response middleware
  module Response

    # This class raises an Octokit-flavored exception based 
    # HTTP status codes returned by the API
    class RaiseError < Faraday::Response::Middleware

      # Status code to error mappings
      # @private
      ERROR_MAP = {
        400 => Octokit::BadRequest,
        401 => Octokit::Unauthorized,
        403 => Octokit::Forbidden,
        404 => Octokit::NotFound,
        406 => Octokit::NotAcceptable,
        422 => Octokit::UnprocessableEntity,
        500 => Octokit::InternalServerError,
        501 => Octokit::NotImplemented,
        502 => Octokit::BadGateway,
        503 => Octokit::ServiceUnavailable
      }

      private

      def on_complete(response)
        key = response[:status].to_i
        raise ERROR_MAP[key].new(response) if ERROR_MAP.has_key? key
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
octokit-2.0.0.rc2 lib/octokit/response/raise_error.rb
octokit-2.0.0.rc1 lib/octokit/response/raise_error.rb
octokit-2.0.0.pre lib/octokit/response/raise_error.rb