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