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



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/quaderno-ruby/exceptions/exceptions.rb', line 41

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.instance_of?(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.instance_of?(Net::HTTPForbidden)
    raise_exception(Quaderno::Exceptions::RateLimitExceeded, 'Rate limit exceeded', party_response)
  end

  if params[:subdomain_or_token].nil? == false && party_response.response.instance_of?(Net::HTTPUnauthorized)
    raise_exception(Quaderno::Exceptions::InvalidSubdomainOrToken, 'Invalid subdomain or token', party_response)
  end

  if params[:id].nil? == false && (party_response.response.instance_of?(Net::HTTPInternalServerError) || party_response.response.instance_of?(Net::HTTPNotFound))
    raise_exception(Quaderno::Exceptions::InvalidID, "Invalid #{api_model} instance identifier", party_response)
  end

  if params[:required_fields].nil? == false && party_response.response.instance_of?(Net::HTTPUnprocessableEntity)
    raise_exception(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body, party_response)
  end

  if party_response.response.instance_of?(Net::HTTPBadRequest)
    raise_exception(Quaderno::Exceptions::RequiredFieldsEmptyOrInvalid, party_response.body, party_response)
  end

  if params[:has_documents].nil? == false && party_response.response.instance_of?(Net::HTTPClientError)
    raise_exception(Quaderno::Exceptions::HasAssociatedDocuments, party_response.body, party_response)
  end

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

#raise_exception(klass, message, response) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/quaderno-ruby/exceptions/exceptions.rb', line 76

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

  raise exception
end