Sha256: 3106880abbdc326e71327db8e6dec84415c7aab5a23f11d418425a0efb2528e6

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

# frozen_string_literal: true

module Redd
  # Namespace for Redd errors.
  module Errors
    # An error raised by {Redd::Middleware} when there was an error returned by reddit.
    class TokenRetrievalError < StandardError; end

    # 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

    # Too many requests and not enough rate limiting.
    class TooManyRequests < ResponseError; end

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
redd-0.9.0.pre.2 lib/redd/errors.rb
redd-0.9.0.pre.1 lib/redd/errors.rb