shotgrid_api_ruby 0.1.3 → 0.2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/workflows/test_and_publish.yml +2 -0
- data/.github/workflows/test_only.yml +2 -0
- data/.gitignore +3 -0
- data/.overcommit.yml +9 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +27 -1
- data/CODE_OF_CONDUCT.md +128 -0
- data/Gemfile +18 -0
- data/Guardfile +2 -2
- data/bin/generate_and_add_documentation +1 -0
- data/bin/generate_sorbet_coverage +3 -0
- data/bin/prettirun +1 -1
- data/bin/sorbet_check +1 -0
- data/bin/tapioca +29 -0
- data/docs/ShotgridApiRuby/Auth/Validator.html +319 -0
- data/docs/ShotgridApiRuby/Auth.html +1079 -0
- data/docs/ShotgridApiRuby/Client.html +933 -0
- data/docs/ShotgridApiRuby/Entities/Params/TooComplexFiltersError.html +124 -0
- data/docs/ShotgridApiRuby/Entities/Params.html +1377 -0
- data/docs/ShotgridApiRuby/Entities/Schema.html +646 -0
- data/docs/ShotgridApiRuby/Entities/Summarize/Summary.html +401 -0
- data/docs/ShotgridApiRuby/Entities/Summarize.html +775 -0
- data/docs/ShotgridApiRuby/Entities.html +2461 -0
- data/docs/ShotgridApiRuby/Entity.html +935 -0
- data/docs/ShotgridApiRuby/Preferences.html +417 -0
- data/docs/ShotgridApiRuby/ServerInfo.html +415 -0
- data/docs/ShotgridApiRuby/ShotgridCallError.html +328 -0
- data/docs/ShotgridApiRuby/Types.html +136 -0
- data/docs/ShotgridApiRuby.html +307 -0
- data/docs/_index.html +253 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +497 -0
- data/docs/file.README.html +578 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +578 -0
- data/docs/js/app.js +314 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +643 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/shotgrid_api_ruby/auth.rb +89 -33
- data/lib/shotgrid_api_ruby/client.rb +50 -7
- data/lib/shotgrid_api_ruby/entities/params.rb +304 -65
- data/lib/shotgrid_api_ruby/entities/schema.rb +18 -3
- data/lib/shotgrid_api_ruby/entities/summarize.rb +39 -7
- data/lib/shotgrid_api_ruby/entities.rb +118 -29
- data/lib/shotgrid_api_ruby/entity.rb +29 -12
- data/lib/shotgrid_api_ruby/preferences.rb +7 -1
- data/lib/shotgrid_api_ruby/server_info.rb +7 -1
- data/lib/shotgrid_api_ruby/shotgrid_call_error.rb +5 -1
- data/lib/shotgrid_api_ruby/types/auth_type.rb +23 -0
- data/lib/shotgrid_api_ruby/version.rb +2 -1
- data/lib/shotgrid_api_ruby.rb +20 -2
- data/shotgrid_api_ruby.gemspec +3 -11
- data/sorbet/config +6 -0
- data/sorbet/rbi/faraday.rbi +20 -0
- data/sorbet/rbi/gems/activesupport@6.1.4.1.rbi +3770 -0
- data/sorbet/rbi/gems/ast@2.4.2.rbi +54 -0
- data/sorbet/rbi/gems/backport@1.2.0.rbi +8 -0
- data/sorbet/rbi/gems/benchmark@0.1.1.rbi +65 -0
- data/sorbet/rbi/gems/bundler-audit@0.8.0.rbi +8 -0
- data/sorbet/rbi/gems/byebug@11.1.3.rbi +1569 -0
- data/sorbet/rbi/gems/childprocess@4.1.0.rbi +8 -0
- data/sorbet/rbi/gems/coderay@1.1.3.rbi +1005 -0
- data/sorbet/rbi/gems/colorize@0.8.1.rbi +39 -0
- data/sorbet/rbi/gems/commander@4.6.0.rbi +8 -0
- data/sorbet/rbi/gems/concurrent-ruby@1.1.9.rbi +2403 -0
- data/sorbet/rbi/gems/diff-lcs@1.4.4.rbi +8 -0
- data/sorbet/rbi/gems/docile@1.4.0.rbi +54 -0
- data/sorbet/rbi/gems/dotenv@2.7.6.rbi +88 -0
- data/sorbet/rbi/gems/e2mmap@0.1.0.rbi +8 -0
- data/sorbet/rbi/gems/faker@2.19.0.rbi +2513 -0
- data/sorbet/rbi/gems/faraday-em_http@1.0.0.rbi +101 -0
- data/sorbet/rbi/gems/faraday-em_synchrony@1.0.0.rbi +78 -0
- data/sorbet/rbi/gems/faraday-excon@1.1.0.rbi +77 -0
- data/sorbet/rbi/gems/faraday-httpclient@1.0.1.rbi +73 -0
- data/sorbet/rbi/gems/faraday-net_http@1.0.1.rbi +82 -0
- data/sorbet/rbi/gems/faraday-net_http_persistent@1.2.0.rbi +72 -0
- data/sorbet/rbi/gems/faraday-patron@1.0.0.rbi +74 -0
- data/sorbet/rbi/gems/faraday-rack@1.0.0.rbi +73 -0
- data/sorbet/rbi/gems/faraday@1.7.0.rbi +783 -0
- data/sorbet/rbi/gems/ffi@1.15.3.rbi +8 -0
- data/sorbet/rbi/gems/formatador@0.3.0.rbi +8 -0
- data/sorbet/rbi/gems/guard-compat@1.2.1.rbi +8 -0
- data/sorbet/rbi/gems/guard-rspec@4.7.3.rbi +8 -0
- data/sorbet/rbi/gems/guard@2.18.0.rbi +8 -0
- data/sorbet/rbi/gems/haml@5.2.2.rbi +8 -0
- data/sorbet/rbi/gems/highline@2.0.3.rbi +8 -0
- data/sorbet/rbi/gems/i18n@1.8.10.rbi +584 -0
- data/sorbet/rbi/gems/iniparse@1.5.0.rbi +8 -0
- data/sorbet/rbi/gems/jaro_winkler@1.5.4.rbi +8 -0
- data/sorbet/rbi/gems/kramdown-parser-gfm@1.1.0.rbi +8 -0
- data/sorbet/rbi/gems/kramdown@2.3.1.rbi +8 -0
- data/sorbet/rbi/gems/listen@3.7.0.rbi +476 -0
- data/sorbet/rbi/gems/lumberjack@1.2.8.rbi +8 -0
- data/sorbet/rbi/gems/method_source@1.0.0.rbi +72 -0
- data/sorbet/rbi/gems/minitest@5.14.4.rbi +344 -0
- data/sorbet/rbi/gems/multipart-post@2.1.1.rbi +69 -0
- data/sorbet/rbi/gems/nenv@0.3.0.rbi +8 -0
- data/sorbet/rbi/gems/nokogiri@1.12.3.rbi +8 -0
- data/sorbet/rbi/gems/notiffany@0.1.3.rbi +8 -0
- data/sorbet/rbi/gems/overcommit@0.58.0.rbi +8 -0
- data/sorbet/rbi/gems/parallel@1.20.1.rbi +8 -0
- data/sorbet/rbi/gems/parlour@6.0.1.rbi +1610 -0
- data/sorbet/rbi/gems/parser@3.0.2.0.rbi +1731 -0
- data/sorbet/rbi/gems/prettier@1.6.1.rbi +8 -0
- data/sorbet/rbi/gems/pry-byebug@3.9.0.rbi +461 -0
- data/sorbet/rbi/gems/pry@0.13.1.rbi +2553 -0
- data/sorbet/rbi/gems/racc@1.5.2.rbi +47 -0
- data/sorbet/rbi/gems/rainbow@3.0.0.rbi +153 -0
- data/sorbet/rbi/gems/rake@13.0.6.rbi +807 -0
- data/sorbet/rbi/gems/rb-fsevent@0.11.0.rbi +8 -0
- data/sorbet/rbi/gems/rb-inotify@0.10.1.rbi +8 -0
- data/sorbet/rbi/gems/regexp_parser@2.1.1.rbi +8 -0
- data/sorbet/rbi/gems/reverse_markdown@2.0.0.rbi +8 -0
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +672 -0
- data/sorbet/rbi/gems/rspec-core@3.10.1.rbi +2500 -0
- data/sorbet/rbi/gems/rspec-expectations@3.10.1.rbi +1574 -0
- data/sorbet/rbi/gems/rspec-mocks@3.10.2.rbi +1462 -0
- data/sorbet/rbi/gems/rspec-support@3.10.2.rbi +510 -0
- data/sorbet/rbi/gems/rspec@3.10.0.rbi +39 -0
- data/sorbet/rbi/gems/rspec_in_context@1.1.0.3.rbi +196 -0
- data/sorbet/rbi/gems/rubocop-ast@1.11.0.rbi +8 -0
- data/sorbet/rbi/gems/rubocop-faker@1.1.0.rbi +8 -0
- data/sorbet/rbi/gems/rubocop-performance@1.11.5.rbi +8 -0
- data/sorbet/rbi/gems/rubocop-sorbet@0.6.2.rbi +8 -0
- data/sorbet/rbi/gems/rubocop@1.20.0.rbi +8 -0
- data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +8 -0
- data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +8 -0
- data/sorbet/rbi/gems/shellany@0.0.1.rbi +8 -0
- data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +89 -0
- data/sorbet/rbi/gems/simplecov@0.21.2.rbi +577 -0
- data/sorbet/rbi/gems/simplecov_json_formatter@0.1.3.rbi +8 -0
- data/sorbet/rbi/gems/solargraph@0.43.0.rbi +8 -0
- data/sorbet/rbi/gems/spoom@1.1.2.rbi +1204 -0
- data/sorbet/rbi/gems/tapioca@0.4.25.rbi +1239 -0
- data/sorbet/rbi/gems/temple@0.8.2.rbi +8 -0
- data/sorbet/rbi/gems/thor@1.1.0.rbi +838 -0
- data/sorbet/rbi/gems/tilt@2.0.10.rbi +8 -0
- data/sorbet/rbi/gems/timecop@0.9.4.rbi +82 -0
- data/sorbet/rbi/gems/tzinfo@2.0.4.rbi +857 -0
- data/sorbet/rbi/gems/unicode-display_width@2.0.0.rbi +8 -0
- data/sorbet/rbi/gems/unparser@0.6.0.rbi +8 -0
- data/sorbet/rbi/gems/vcr@6.0.0.rbi +782 -0
- data/sorbet/rbi/gems/yard-sorbet@0.5.3.rbi +8 -0
- data/sorbet/rbi/gems/yard@0.9.26.rbi +8 -0
- data/sorbet/rbi/gems/zeitwerk@2.4.2.rbi +173 -0
- data/sorbet/tapioca/config +0 -0
- data/sorbet/tapioca/require.rb +5 -0
- metadata +148 -128
@@ -0,0 +1,110 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.26
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
pathId = "";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
|
41
|
+
|
42
|
+
<span class="title">Top Level Namespace</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Top Level Namespace
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
</div>
|
80
|
+
|
81
|
+
<h2>Defined Under Namespace</h2>
|
82
|
+
<p class="children">
|
83
|
+
|
84
|
+
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="ShotgridApiRuby.html" title="ShotgridApiRuby (module)">ShotgridApiRuby</a></span>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
</p>
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
</div>
|
101
|
+
|
102
|
+
<div id="footer">
|
103
|
+
Generated on Tue Oct 12 21:57:54 2021 by
|
104
|
+
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
105
|
+
0.9.26 (ruby-3.0.2).
|
106
|
+
</div>
|
107
|
+
|
108
|
+
</div>
|
109
|
+
</body>
|
110
|
+
</html>
|
@@ -1,14 +1,28 @@
|
|
1
|
+
# typed: strict
|
1
2
|
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module ShotgridApiRuby
|
4
5
|
# Faraday middleware responsible for authentication with
|
5
6
|
# the shotgrid site
|
6
7
|
class Auth < Faraday::Middleware
|
8
|
+
extend T::Sig
|
9
|
+
|
7
10
|
# Validate auth parameters format
|
8
11
|
module Validator
|
12
|
+
extend T::Sig
|
13
|
+
|
9
14
|
# Validate auth parameters format
|
10
|
-
|
11
|
-
|
15
|
+
sig do
|
16
|
+
params(
|
17
|
+
client_id: T.nilable(String),
|
18
|
+
client_secret: T.nilable(String),
|
19
|
+
username: T.nilable(String),
|
20
|
+
password: T.nilable(String),
|
21
|
+
session_token: T.nilable(String),
|
22
|
+
refresh_token: T.nilable(String),
|
23
|
+
)
|
24
|
+
.returns(T::Boolean)
|
25
|
+
end
|
12
26
|
def self.valid?(
|
13
27
|
client_id: nil,
|
14
28
|
client_secret: nil,
|
@@ -17,60 +31,97 @@ module ShotgridApiRuby
|
|
17
31
|
session_token: nil,
|
18
32
|
refresh_token: nil
|
19
33
|
)
|
20
|
-
(
|
21
|
-
|
34
|
+
!!(
|
35
|
+
(client_id && client_secret) || (password && username) ||
|
36
|
+
session_token || refresh_token
|
37
|
+
)
|
22
38
|
end
|
23
39
|
end
|
24
40
|
|
25
|
-
|
41
|
+
sig do
|
42
|
+
params(
|
43
|
+
app: T.untyped,
|
44
|
+
options: {
|
45
|
+
site_url: T.nilable(String),
|
46
|
+
auth: T.nilable(Types::AuthType),
|
47
|
+
},
|
48
|
+
).void
|
49
|
+
end
|
50
|
+
def initialize(app = nil, options = { auth: nil, site_url: nil })
|
26
51
|
raise 'missing auth' unless options[:auth]
|
27
52
|
raise 'missing site_url' unless options[:site_url]
|
28
53
|
unless Validator.valid?(**options[:auth]&.transform_keys(&:to_sym))
|
29
54
|
raise 'Auth not valid'
|
30
55
|
end
|
31
56
|
|
32
|
-
|
57
|
+
@site_url = T.let(options[:site_url], String)
|
58
|
+
@client_id = T.let(options[:auth][:client_id], T.nilable(String))
|
59
|
+
@client_secret = T.let(options[:auth][:client_secret], T.nilable(String))
|
60
|
+
@username = T.let(options[:auth][:username], T.nilable(String))
|
61
|
+
@password = T.let(options[:auth][:password], T.nilable(String))
|
62
|
+
@session_token = T.let(options[:auth][:session_token], T.nilable(String))
|
63
|
+
@refresh_token = T.let(options[:auth][:refresh_token], T.nilable(String))
|
64
|
+
@app =
|
65
|
+
T.let(
|
66
|
+
nil,
|
67
|
+
T.nilable(T.any(Faraday::Middleware, VCR::Middleware::Faraday)),
|
68
|
+
)
|
69
|
+
@auth_type = T.let(nil, T.nilable(String))
|
70
|
+
@auth_params = T.let(nil, T.nilable(String))
|
71
|
+
@auth_url = T.let(nil, T.nilable(String))
|
72
|
+
@access_token = T.let(nil, T.nilable(String))
|
73
|
+
@token_expiry = T.let(nil, T.nilable(Time))
|
33
74
|
|
34
|
-
|
35
|
-
@client_id = options[:auth][:client_id]
|
36
|
-
@client_secret = options[:auth][:client_secret]
|
37
|
-
@username = options[:auth][:username]
|
38
|
-
@password = options[:auth][:password]
|
39
|
-
@session_token = options[:auth][:session_token]
|
40
|
-
@refresh_token = options[:auth][:refresh_token]
|
75
|
+
super(app)
|
41
76
|
end
|
42
77
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
78
|
+
sig { returns(T.nilable(String)) }
|
79
|
+
attr_reader :client_id
|
80
|
+
|
81
|
+
sig { returns(T.nilable(String)) }
|
82
|
+
attr_reader :client_secret
|
83
|
+
|
84
|
+
sig { returns(String) }
|
85
|
+
attr_reader :site_url
|
50
86
|
|
87
|
+
sig { returns(T.nilable(String)) }
|
88
|
+
attr_reader :username
|
89
|
+
|
90
|
+
sig { returns(T.nilable(String)) }
|
91
|
+
attr_reader :password
|
92
|
+
|
93
|
+
sig { returns(T.nilable(String)) }
|
94
|
+
attr_reader :session_token
|
95
|
+
|
96
|
+
sig { returns(T.nilable(String)) }
|
97
|
+
attr_reader :refresh_token
|
98
|
+
|
99
|
+
sig { returns(String) }
|
51
100
|
def auth_type
|
52
101
|
@auth_type ||=
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
102
|
+
if refresh_token
|
103
|
+
'refresh_token'
|
104
|
+
elsif client_id
|
105
|
+
'client_credentials'
|
106
|
+
elsif username
|
107
|
+
'password'
|
108
|
+
elsif session_token
|
109
|
+
'session_token'
|
110
|
+
else
|
111
|
+
''
|
63
112
|
end
|
64
113
|
end
|
65
114
|
|
115
|
+
sig { params(request_env: Faraday::Env).returns(Faraday::Response) }
|
66
116
|
def call(request_env)
|
67
117
|
request_env[:request_headers].merge!(std_headers)
|
68
118
|
|
69
|
-
@app
|
119
|
+
@app&.call(request_env)
|
70
120
|
end
|
71
121
|
|
72
122
|
private
|
73
123
|
|
124
|
+
sig { returns(String) }
|
74
125
|
def auth_params
|
75
126
|
@auth_params ||=
|
76
127
|
begin
|
@@ -91,14 +142,18 @@ module ShotgridApiRuby
|
|
91
142
|
end
|
92
143
|
end
|
93
144
|
|
145
|
+
sig { returns(String) }
|
94
146
|
def auth_url
|
95
147
|
@auth_url ||= "#{site_url}/auth/access_token?#{auth_params}"
|
96
148
|
end
|
97
149
|
|
150
|
+
sig { returns(String) }
|
98
151
|
def access_token
|
99
|
-
(
|
152
|
+
sign_in if (!@access_token || Time.now > (@token_expiry || Time.now))
|
153
|
+
@access_token || ''
|
100
154
|
end
|
101
155
|
|
156
|
+
sig { returns(String) }
|
102
157
|
def sign_in
|
103
158
|
resp =
|
104
159
|
Faraday.post(auth_url) do |req|
|
@@ -114,11 +169,12 @@ module ShotgridApiRuby
|
|
114
169
|
)
|
115
170
|
end
|
116
171
|
|
117
|
-
@access_token = resp_body['access_token']
|
118
172
|
@token_expiry = Time.now + resp_body['expires_in']
|
119
173
|
@refresh_token = resp_body['refresh_token']
|
174
|
+
@access_token = resp_body['access_token']
|
120
175
|
end
|
121
176
|
|
177
|
+
sig { returns(T::Hash[String, String]) }
|
122
178
|
def std_headers
|
123
179
|
{
|
124
180
|
'Accept' => 'application/json',
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# typed: strict
|
1
2
|
# frozen_string_literal: true
|
2
3
|
|
3
4
|
module ShotgridApiRuby
|
@@ -5,12 +6,28 @@ module ShotgridApiRuby
|
|
5
6
|
#
|
6
7
|
# This should be only instanciated once to re-use tokens
|
7
8
|
class Client
|
8
|
-
|
9
|
-
attr_reader :connection
|
9
|
+
extend T::Sig
|
10
10
|
|
11
|
+
sig do
|
12
|
+
params(
|
13
|
+
auth: Types::AuthType,
|
14
|
+
site_url: T.nilable(String),
|
15
|
+
shotgun_site: T.nilable(String),
|
16
|
+
shotgrid_site: T.nilable(String),
|
17
|
+
).void
|
18
|
+
end
|
11
19
|
def initialize(auth:, site_url: nil, shotgun_site: nil, shotgrid_site: nil)
|
12
20
|
raise 'No site given' unless site_url || shotgun_site || shotgrid_site
|
13
|
-
|
21
|
+
if !Auth::Validator.valid?(
|
22
|
+
client_id: auth[:client_id],
|
23
|
+
client_secret: auth[:client_secret],
|
24
|
+
username: auth[:username],
|
25
|
+
password: auth[:password],
|
26
|
+
session_token: auth[:session_token],
|
27
|
+
refresh_token: auth[:refresh_token],
|
28
|
+
)
|
29
|
+
raise 'auth param not valid'
|
30
|
+
end
|
14
31
|
|
15
32
|
site_url ||=
|
16
33
|
if shotgun_site
|
@@ -20,31 +37,55 @@ module ShotgridApiRuby
|
|
20
37
|
end
|
21
38
|
|
22
39
|
@connection =
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
40
|
+
T.let(
|
41
|
+
Faraday.new(url: site_url) do |faraday|
|
42
|
+
faraday.use(ShotgridApiRuby::Auth, auth: auth, site_url: site_url)
|
43
|
+
faraday.adapter Faraday.default_adapter
|
44
|
+
end,
|
45
|
+
Faraday::Connection,
|
46
|
+
)
|
47
|
+
@preferences = T.let(nil, T.nilable(Preferences))
|
48
|
+
@server_info = T.let(nil, T.nilable(ServerInfo))
|
49
|
+
@entity_caller = T.let(nil, T.nilable(Entities))
|
27
50
|
end
|
28
51
|
|
52
|
+
# Faraday connection
|
53
|
+
sig { returns(Faraday::Connection) }
|
54
|
+
attr_reader :connection
|
55
|
+
|
29
56
|
# Access preferences APIs
|
57
|
+
sig { returns(Preferences) }
|
30
58
|
def preferences
|
31
59
|
@preferences = Preferences.new(connection)
|
32
60
|
end
|
33
61
|
|
34
62
|
# Access server_info APIs
|
63
|
+
sig { returns(ServerInfo) }
|
35
64
|
def server_info
|
36
65
|
@server_info || ServerInfo.new(connection)
|
37
66
|
end
|
38
67
|
|
39
68
|
# Access entities related APIs
|
69
|
+
sig { params(type: T.any(Symbol, String)).returns(Entities) }
|
40
70
|
def entities(type)
|
41
71
|
public_send(type)
|
42
72
|
end
|
43
73
|
|
74
|
+
sig do
|
75
|
+
params(_name: T.untyped, _include_private: T.untyped).returns(TrueClass)
|
76
|
+
end
|
44
77
|
def respond_to_missing?(_name, _include_private = false)
|
45
78
|
true
|
46
79
|
end
|
47
80
|
|
81
|
+
sig do
|
82
|
+
params(
|
83
|
+
name: T.any(String, Symbol),
|
84
|
+
args: T::Array[T.untyped],
|
85
|
+
block: T.nilable(Proc),
|
86
|
+
)
|
87
|
+
.returns(Entities)
|
88
|
+
end
|
48
89
|
def method_missing(name, *args, &block)
|
49
90
|
if args.empty?
|
50
91
|
fname = formated_name(name)
|
@@ -67,10 +108,12 @@ module ShotgridApiRuby
|
|
67
108
|
|
68
109
|
private
|
69
110
|
|
111
|
+
sig { params(name: T.any(String, Symbol)).returns(String) }
|
70
112
|
def formated_name(name)
|
71
113
|
name.to_s.camelize.singularize
|
72
114
|
end
|
73
115
|
|
116
|
+
sig { params(type: T.any(String, Symbol)).returns(Entities) }
|
74
117
|
def entities_aux(type)
|
75
118
|
type = formated_name(type)
|
76
119
|
@entity_caller = Entities.new(connection, type)
|