Sha256: 39b40734f9a010b50d373b27517643e10b8cf2b26f95b73164caf9bcb1a2da68

Contents?: true

Size: 1.76 KB

Versions: 21

Compression:

Stored size: 1.76 KB

Contents

require_relative 'utils'

class Fanforce::API::Error < StandardError
  attr_accessor :response, :request, :requested_url, :requested_params, :errors

  def initialize(message, response, request, requested_url, requested_params)
    @response = response
    @request = request
    @requested_url = requested_url
    @requested_params = requested_params
    @message = message
    super(message)
  end

  def curl_command
    method = begin @request.method rescue nil end
    Fanforce::Utils.curl_command(method, @requested_url, @requested_params)
  end

  def code;    @response.respond_to?(:code) ? @response.code : 500 end
  def to_s;    @message end
  def to_hash; {}  end
end

class Fanforce::API::ServerError < Fanforce::API::Error

  def initialize(response, request, requested_url, requested_params)
    @response_body = response.to_s

    begin
      @response_hash = Fanforce::Utils.decode_json(response)
      @errors = @response_hash[:errors]
    rescue Exception => e
      raise Fanforce::API::DecodingError.new(e, response, request, requested_url, requested_params)
    end

    super(response.to_s, response, request, requested_url, requested_params)
  end

  def to_hash
    @response_hash
  end

  def curl_command
    method = begin @request.method rescue nil end
    Fanforce::Utils.curl_command(method, @requested_url, @requested_params)
  end

  def code; @response.code end

end

class Fanforce::API::DecodingError < Fanforce::API::Error

  def initialize(e, response, request, requested_url, requested_params)
    @message = "There was a Fanforce gem error while decoding JSON response: #{e.message}"
    @errors = [{message: @message}]
    super(@message, response, request, requested_url, requested_params)
  end

  def to_hash
    {errors: @errors}
  end

  def code; 500 end

end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
fanforce-api-0.14.9 lib/fanforce/api/error.rb
fanforce-api-0.14.8 lib/fanforce/api/error.rb
fanforce-api-0.14.7 lib/fanforce/api/error.rb
fanforce-api-0.14.6 lib/fanforce/api/error.rb
fanforce-api-0.14.5 lib/fanforce/api/error.rb
fanforce-api-0.14.4 lib/fanforce/api/error.rb
fanforce-api-0.14.3 lib/fanforce/api/error.rb
fanforce-api-0.14.2 lib/fanforce/api/error.rb
fanforce-api-0.14.1 lib/fanforce/api/error.rb
fanforce-api-0.14.0 lib/fanforce/api/error.rb
fanforce-api-0.13.0 lib/fanforce/api/error.rb
fanforce-api-0.12.2 lib/fanforce/api/error.rb
fanforce-api-0.12.1 lib/fanforce/api/error.rb
fanforce-api-0.12.0 lib/fanforce/api/error.rb
fanforce-api-0.11.0 lib/fanforce/api/error.rb
fanforce-api-0.10.0 lib/fanforce/api/error.rb
fanforce-api-0.9.4 lib/fanforce/api/error.rb
fanforce-api-0.9.3 lib/fanforce/api/error.rb
fanforce-api-0.9.2 lib/fanforce/api/error.rb
fanforce-api-0.9.1 lib/fanforce/api/error.rb