class MyTankInfo::Resource
Attributes
client[R]
Public Class Methods
new(client)
click to toggle source
# File lib/my_tank_info/resource.rb, line 7 def initialize(client) @client = client end
Public Instance Methods
delete_request(url, params: {}, headers: {})
click to toggle source
# File lib/my_tank_info/resource.rb, line 27 def delete_request(url, params: {}, headers: {}) handle_response client.connection.delete(url, params, default_headers.merge(headers)) end
get_request(url, params: {}, headers: {})
click to toggle source
# File lib/my_tank_info/resource.rb, line 11 def get_request(url, params: {}, headers: {}) handle_response client.connection.get(url, params, default_headers.merge(headers)) end
patch_request(url, body:, headers: {})
click to toggle source
# File lib/my_tank_info/resource.rb, line 19 def patch_request(url, body:, headers: {}) handle_response client.connection.patch(url, body, default_headers.merge(headers)) end
post_request(url, body:, headers: {})
click to toggle source
# File lib/my_tank_info/resource.rb, line 15 def post_request(url, body:, headers: {}) handle_response client.connection.post(url, body, default_headers.merge(headers)) end
put_request(url, body:, headers: {})
click to toggle source
# File lib/my_tank_info/resource.rb, line 23 def put_request(url, body:, headers: {}) handle_response client.connection.put(url, body, default_headers.merge(headers)) end
Private Instance Methods
default_headers()
click to toggle source
# File lib/my_tank_info/resource.rb, line 44 def default_headers {Authorization: "Bearer #{client.api_key}"} end
enforce_required_attributes(required_attrs:, attrs:)
click to toggle source
# File lib/my_tank_info/resource.rb, line 33 def enforce_required_attributes(required_attrs:, attrs:) attr_keys = attrs.keys required_attrs_present = required_attrs.all? { |req_attr| attr_keys.include?(req_attr) } unless required_attrs_present missing_attrs = required_attrs - attr_keys error_message = "You must provide values for all required attributes: #{missing_attrs.join(", ")}" raise MissingRequiredAttributeError, error_message end end
handle_response(response)
click to toggle source
# File lib/my_tank_info/resource.rb, line 48 def handle_response(response) message = response.body case response.status when 400 raise Error, "Your request was malformed - #{message}" when 401 raise UnauthorizedError, "You did not supply valid authentication credentials - #{message}" when 403 raise RequestForbiddenError, "You are not allowed to perform that action - #{message}" when 404 raise Error, "This resource could not be found" when 429 raise Error, "Your request exceeded the API rate limit - #{message}" when 500 raise InternalServerError, "We were unable to perform the request due to server-side problems - #{message}" end response end