Sha256: 2c18fbf6c759ca87bcb1c76ee88517f37f18e21577a172c272a9a14c4f38f5b8

Contents?: true

Size: 1.45 KB

Versions: 4

Compression:

Stored size: 1.45 KB

Contents

module CFoundry
  class APIError < RuntimeError
    class << self
      attr_reader :error_code, :description

      def setup(code, description = nil)
        @error_code = code
        @description = description
      end
    end

    def initialize(error_code = nil, description = nil)
      @error_code = error_code
      @description = description
    end

    def error_code
      @error_code || self.class.error_code
    end

    def description
      @description || self.class.description
    end

    def to_s
      if error_code
        "#{error_code}: #{description}"
      else
        description
      end
    end
  end

  class NotFound < APIError
    setup(404, "entity not found or inaccessible")
  end

  class TargetRefused < APIError
    @description = "target refused connection"

    attr_reader :message

    def initialize(message)
      @message = message
    end

    def to_s
      "#{description} (#{@message})"
    end
  end

  class UploadFailed < APIError
    setup(402)
  end

  class Denied < APIError
    attr_reader :error_code, :description

    def initialize(
        error_code = 200,
        description = "Operation not permitted")
      @error_code = error_code
      @description = description
    end
  end

  class BadResponse < StandardError
    def initialize(code, body = nil)
      @code = code
      @body = body
    end

    def to_s
      "target failed to handle our request due to an internal error (#{@code})"
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
cfoundry-0.2.0 lib/cfoundry/errors.rb
cfoundry-0.1.2 lib/cfoundry/errors.rb
cfoundry-0.1.1 lib/cfoundry/errors.rb
cfoundry-0.1.0 lib/cfoundry/errors.rb