Sha256: cb639c27efff634de25bd1ddfdfc8e476f2d600ef600fe7bbe349429fb83d51f

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

module Buckaruby
  # Base class for exceptions.
  class BuckarooException < StandardError
  end

  # Exception raised when an API call to Buckaroo results in a "Fail".
  class ApiException < BuckarooException
    attr_reader :params

    def initialize(params = {})
      @params = params

      if status_message && status_code
        message = "API request failed: #{status_message} (#{status_code})"
      elsif error_message
        message = "API request failed: #{error_message}"
      else
        message = "API request failed"
      end

      super(message)
    end

    def status_message
      params[:brq_statusmessage]
    end

    def status_code
      params[:brq_statuscode]
    end

    def error_message
      params[:brq_apierrormessage]
    end
  end

  # Exception raised when a request to Buckaroo fails because of connection problems.
  class ConnectionException < BuckarooException
    def initialize(exception)
      message = "Error connecting to Buckaroo: #{exception.message} (#{exception.class})"
      super(message)
    end
  end

  # Exception raised when the response from Buckaroo was invalid.
  class InvalidResponseException < BuckarooException
    attr_reader :response

    def initialize(response)
      @response = response

      message = "Invalid response received from Buckaroo: #{response.message} (#{response.code})"
      super(message)
    end
  end

  # Exception raised when the signature could not be verified.
  class SignatureException < BuckarooException
    attr_reader :sent_signature, :generated_signature

    def initialize(sent_signature = "", generated_signature = "")
      @sent_signature = sent_signature
      @generated_signature = generated_signature

      message = "Sent signature (#{sent_signature}) doesn't match generated signature (#{generated_signature})"
      super(message)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
buckaruby-1.0.2 lib/buckaruby/exception.rb