Class: ShotgridApiRuby::Client
- Inherits:
-
Object
- Object
- ShotgridApiRuby::Client
- Extended by:
- T::Sig
- Defined in:
- lib/shotgrid_api_ruby/client.rb
Overview
Main class for connection.
This should be only instanciated once to re-use tokens
Instance Attribute Summary collapse
-
#connection ⇒ Faraday::Connection
readonly
Faraday connection.
Instance Method Summary collapse
-
#entities(type) ⇒ Entities
Access entities related APIs.
- #initialize(auth:, site_url: nil, shotgun_site: nil, shotgrid_site: nil) ⇒ void constructor
- #method_missing(name, *args, &block) ⇒ Entities
-
#preferences ⇒ Preferences
Access preferences APIs.
- #respond_to_missing?(_name, _include_private = false) ⇒ true
-
#server_info ⇒ ServerInfo
Access server_info APIs.
Constructor Details
#initialize(auth:, site_url: nil, shotgun_site: nil, shotgrid_site: nil) ⇒ void
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/shotgrid_api_ruby/client.rb', line 19 def initialize(auth:, site_url: nil, shotgun_site: nil, shotgrid_site: nil) raise 'No site given' unless site_url || shotgun_site || shotgrid_site if !Auth::Validator.valid?( client_id: auth[:client_id], client_secret: auth[:client_secret], username: auth[:username], password: auth[:password], session_token: auth[:session_token], refresh_token: auth[:refresh_token], ) raise 'auth param not valid' end site_url ||= if shotgun_site "https://#{shotgun_site}.shotgunstudio.com/api/v1" elsif shotgrid_site "https://#{shotgrid_site}.shotgrid.autodesk.com/api/v1" end @connection = T.let( Faraday.new(url: site_url) do |faraday| faraday.use(ShotgridApiRuby::Auth, auth: auth, site_url: site_url) faraday.adapter Faraday.default_adapter end, Faraday::Connection, ) @preferences = T.let(nil, T.nilable(Preferences)) @server_info = T.let(nil, T.nilable(ServerInfo)) @entity_caller = T.let(nil, T.nilable(Entities)) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Entities
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/shotgrid_api_ruby/client.rb', line 89 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 |
Instance Attribute Details
#connection ⇒ Faraday::Connection (readonly)
Faraday connection
54 55 56 |
# File 'lib/shotgrid_api_ruby/client.rb', line 54 def connection @connection end |
Instance Method Details
#entities(type) ⇒ Entities
Access entities related APIs
70 71 72 |
# File 'lib/shotgrid_api_ruby/client.rb', line 70 def entities(type) public_send(type) end |
#preferences ⇒ Preferences
Access preferences APIs
58 59 60 |
# File 'lib/shotgrid_api_ruby/client.rb', line 58 def preferences @preferences = Preferences.new(connection) end |
#respond_to_missing?(_name, _include_private = false) ⇒ true
77 78 79 |
# File 'lib/shotgrid_api_ruby/client.rb', line 77 def respond_to_missing?(_name, _include_private = false) true end |
#server_info ⇒ ServerInfo
Access server_info APIs
64 65 66 |
# File 'lib/shotgrid_api_ruby/client.rb', line 64 def server_info @server_info || ServerInfo.new(connection) end |