class TheCaptain::APIResource
Public Class Methods
api_paths(**paths)
click to toggle source
# File lib/the_captain/api_resource.rb, line 9 def self.api_paths(**paths) @api_paths ||= paths.tap { |hash| hash[:base] ||= "" }.freeze end
class_name()
click to toggle source
# File lib/the_captain/api_resource.rb, line 5 def self.class_name name.split("::")[-1] end
Private Class Methods
define_get_path_methods!()
click to toggle source
# File lib/the_captain/api_resource.rb, line 24 def self.define_get_path_methods! api_paths.each_key do |path_key| if path_key == :base define_singleton_method(:receive) do |resource_id, **params| request(:get, resource_id: resource_id, params: params) end else define_singleton_method("related_#{path_key}".to_sym) do |resource_id, **params| request(:get, resource_id: resource_id, api_dest: path_key, params: params) end end end end
request(method, api_dest: :base, resource_id: nil, params: {})
click to toggle source
# File lib/the_captain/api_resource.rb, line 13 def self.request(method, api_dest: :base, resource_id: nil, params: {}) return unless TheCaptain.enabled? api_path = Utility::Helper.normalize_path(api_paths[api_dest], resource_id) params = Utility::Helper.normalize_params(params) CaptainClient.active_client.request(method, api_path, params).decode_response end