Sha256: adb437fef4b68d2ec892b39f9e2c384602720243ad996ef7520b4f938670ef1b

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

module Redd
  # An error with the API.
  class APIError < StandardError
    attr_reader :response, :name

    def initialize(response)
      @response = response
      @name, message = response.body[:json][:errors][0]
      super(message)
    end
  end

  # Represents an error from reddit returned in a response.
  class ResponseError < StandardError
    attr_accessor :response

    def initialize(response)
      super(response.raw_body.length <= 80 ? response.raw_body : "#{response.raw_body[0..80]}...")
      @response = response
    end
  end

  # An error returned by AuthStrategy.
  # @note A common cause of this error is not having a bot account registered as a developer on
  #   the app.
  class AuthenticationError < ResponseError; end

  # An error with Redd, probably (let me know!)
  class BadRequest < ResponseError; end

  # Whatever it is, you're not allowed to do it.
  class Forbidden < ResponseError; end

  # You don't have the correct scope to do this.
  class InsufficientScope < ResponseError; end

  # The access object supplied was invalid.
  class InvalidAccess < ResponseError; end

  # Returned when reddit raises a 404 error.
  class NotFound < ResponseError; end

  # An unknown error on reddit's end. Usually fixed with a retry.
  class ServerError < ResponseError; end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
redd-0.8.5 lib/redd/error.rb
redd-0.8.4 lib/redd/error.rb