Module: Quaderno::Exceptions::ClassMethods

Defined in:
lib/quaderno-ruby/exceptions/exceptions.rb

Instance Method Summary collapse

Instance Method Details

#check_exception_for(party_response, params = {}) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/quaderno-ruby/exceptions/exceptions.rb', line 35

def check_exception_for(party_response, params = {})
  raise_exception(Quaderno::Exceptions::UnsupportedApiVersion, 'Unsupported API version', party_response) if !!(party_response.body =~ /Unsupported API version/)

  if params[:throttle_limit].nil? == false && party_response.response.class == Net::HTTPServiceUnavailable
    raise_exception(Quaderno::Exceptions::ThrottleLimitExceeded, 'Throttle limit exceeded, please try again later', party_response)
  end
  if params[:rate_limit].nil? == false && party_response.response.class == Net::HTTPForbidden
    raise_exception(Quaderno::Exceptions::RateLimitExceeded, 'Rate limit exceeded', party_response)
  end
  if params[:subdomain_or_token].nil? == false
    raise_exception(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token', party_response) if party_response.response.class == Net::HTTPUnauthorized
  end
  if params[:id].nil? == false
    raise_exception(Quaderno::Exceptions::InvalidID, "Invalid #{ api_model } instance identifier", party_response) if (party_response.response.class == Net::HTTPInternalServerError) || (party_response.response.class == Net::HTTPNotFound)
  end
  if params[:required_fields].nil? == false
    raise_exception(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body, party_response) if party_response.response.class == Net::HTTPUnprocessableEntity
  end
  if params[:has_documents].nil? == false
    raise_exception(Quaderno::Exceptions::HasAssociatedDocuments, party_response.body, party_response) if party_response.response.class == Net::HTTPClientError
  end

  raise_exception(Quaderno::Exceptions::ServerError, 'Server error', party_response) if party_response.response.is_a?(Net::HTTPServerError)
end

#raise_exception(klass, message, response) ⇒ Object



60
61
62
63
64
65
# File 'lib/quaderno-ruby/exceptions/exceptions.rb', line 60

def raise_exception(klass, message, response)
  exception = klass.new(message)
  exception.rate_limit_info = response

  raise exception
end