class ShotgunApiRuby::Client

Main class for connection.

This should be only instanciated once to re-use tokens

Attributes

connection[R]

Faraday connection

Public Class Methods

new(auth:, site_url: nil, shotgun_site: nil) click to toggle source
# File lib/shotgun_api_ruby/client.rb, line 11
def initialize(auth:, site_url: nil, shotgun_site: nil)
  raise 'No site given' unless site_url || shotgun_site
  raise 'auth param not valid' unless auth && Auth::Validator.valid?(**auth)

  site_url ||= "https://#{shotgun_site}.shotgunstudio.com/api/v1"
  @connection =
    Faraday.new(url: site_url) do |faraday|
      faraday.use(ShotgunApiRuby::Auth, auth: auth, site_url: site_url)
      faraday.adapter Faraday.default_adapter
    end
end

Public Instance Methods

entities(type) click to toggle source

Access entities related APIs

# File lib/shotgun_api_ruby/client.rb, line 34
def entities(type)
  public_send(type)
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/shotgun_api_ruby/client.rb, line 42
def method_missing(name, *args, &block)
  if args.empty?
    fname = formated_name(name)
    self
      .class
      .define_method(fname) do
        if entities_client = instance_variable_get("@#{fname}")
          entities_client
        else
          entities_client = entities_aux(fname)
          instance_variable_set("@#{fname}", entities_client)
        end
      end
    self.class.instance_eval { alias_method name, fname }
    send(fname)
  else
    super
  end
end
preferences() click to toggle source

Access preferences APIs

# File lib/shotgun_api_ruby/client.rb, line 24
def preferences
  @preferences = Preferences.new(connection)
end
respond_to_missing?(_name, _include_private = false) click to toggle source
# File lib/shotgun_api_ruby/client.rb, line 38
def respond_to_missing?(_name, _include_private = false)
  true
end
server_info() click to toggle source

Access server_info APIs

# File lib/shotgun_api_ruby/client.rb, line 29
def server_info
  @server_info || ServerInfo.new(connection)
end

Private Instance Methods

entities_aux(type) click to toggle source
# File lib/shotgun_api_ruby/client.rb, line 68
def entities_aux(type)
  type = formated_name(type)
  @entity_caller = Entities.new(connection, type)
end
formated_name(name) click to toggle source
# File lib/shotgun_api_ruby/client.rb, line 64
def formated_name(name)
  name.to_s.camelize.singularize
end