shotgun_api_ruby 0.0.5.2 → 0.0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/verify_version_change.yml +5 -3
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +27 -0
- data/README.md +48 -3
- data/lib/shotgun_api_ruby.rb +1 -0
- data/lib/shotgun_api_ruby/client.rb +1 -1
- data/lib/shotgun_api_ruby/entities.rb +85 -1
- data/lib/shotgun_api_ruby/entities/schema.rb +49 -0
- data/lib/shotgun_api_ruby/version.rb +1 -1
- data/shotgun_api_ruby.gemspec +1 -1
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06c5375e4155418ae69004dd39b03339072744f2e6d95150c78356d5bf0c16cf
|
4
|
+
data.tar.gz: 887e4c5b773fb2e20dd24d70a91268db0a67b872bd105d5259dbfe3f7ff1ebcf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 187e5c60a1dd8a9d2b3e06abc908a085c43f939a90d9312ac78a5d72069fb4456cd3c1ad0aaf9797154b66b48b82ef4064318ee75e31162fdb3bec4361f5b7fb
|
7
|
+
data.tar.gz: 53b1f6d9f3cccb07f79b83ac257959c586c66f3fcc49859dfcae9bcb9099df76f3ba5b8d8929625a4e44aab9db984395cc160a403b565cd36b4996b0de6a31ff
|
@@ -14,8 +14,10 @@ jobs:
|
|
14
14
|
- name: Fetch main branch
|
15
15
|
run: git fetch origin main:main
|
16
16
|
- name: Verify if there's a change in version
|
17
|
-
run: "git diff main lib/
|
17
|
+
run: "git diff main lib/shotgun_api_ruby/version.rb | grep VERSION"
|
18
18
|
- name: Print new version
|
19
|
-
run: 'git diff main lib/
|
19
|
+
run: 'git diff main lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?"'
|
20
20
|
- name: Verify if higher version
|
21
|
-
run: '[[ $(git diff main lib/
|
21
|
+
run: '[[ $(git diff main lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?") > $(git diff main lib/shotgun_api_ruby/version.rb | grep -E "^-.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?") ]]'
|
22
|
+
- name: Verify if version is updated in Gemfile.lock
|
23
|
+
run: '[[ $(cat Gemfile.lock | grep "$(git diff main lib/shotgun_api_ruby/version.rb | grep -E "^\+.*VERSION" | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?")") ]]'
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Changelog
|
2
|
+
All notable changes to this project will be documented in this file.
|
3
|
+
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
|
+
|
7
|
+
## [Unreleased]
|
8
|
+
|
9
|
+
## [0.0.8.3] - 2021-01-07
|
10
|
+
### Added
|
11
|
+
- eager_load files to fix weird bugs in rspec
|
12
|
+
|
13
|
+
## [0.0.8] - 2020-12-16
|
14
|
+
### Added
|
15
|
+
- Schema: read
|
16
|
+
- Schema: read fields
|
17
|
+
|
18
|
+
## [0.0.7] - 2020-12-16
|
19
|
+
### Added
|
20
|
+
- Entities: update
|
21
|
+
- Entities: create
|
22
|
+
- Entities: delete
|
23
|
+
- Entities: revive
|
24
|
+
|
25
|
+
[Unreleased]: https://github.com/shotgunsoftware/shotgun_api_ruby/compare/v0.0.8...HEAD
|
26
|
+
[0.0.8]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.8
|
27
|
+
[0.0.7]: https://github.com/shotgunsoftware/shotgun_api_ruby/releases/tag/v0.0.7
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# ShotgunApiRuby
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/shotgun_api_ruby)
|
4
|
+

|
5
|
+
|
3
6
|
A gem to integrate with shotgun REST API easily.
|
4
7
|
|
5
8
|
## Installation
|
@@ -305,15 +308,57 @@ client.assets.find(724, fields: [:code, 'description'], retired: false)
|
|
305
308
|
|
306
309
|
#### Create
|
307
310
|
|
308
|
-
|
311
|
+
Will create the entity referenced by the id with the following fields.
|
312
|
+
If successful, it will return the newly created entity.
|
313
|
+
|
314
|
+
```ruby
|
315
|
+
client.assets.create(code: 'New Asset', project: {type: 'Project', id: 63})
|
316
|
+
```
|
309
317
|
|
310
318
|
#### Update
|
311
319
|
|
312
|
-
|
320
|
+
Will update the entity referenced by the id with the following fields.
|
321
|
+
If successful, it will return the modified entity.
|
322
|
+
|
323
|
+
```ruby
|
324
|
+
client.assets.update(1226, code: 'Updated Asset', sg_status_list: 'fin')
|
325
|
+
```
|
313
326
|
|
314
327
|
#### Delete
|
315
328
|
|
316
|
-
|
329
|
+
Will destroys the entity referenced by the id. Will return true if successful.
|
330
|
+
|
331
|
+
```ruby
|
332
|
+
client.assets.delete(1226)
|
333
|
+
```
|
334
|
+
|
335
|
+
#### Revive
|
336
|
+
|
337
|
+
Will try to revive the entity referenced by the id. Will return true if successful.
|
338
|
+
|
339
|
+
```ruby
|
340
|
+
client.assets.revive(1226)
|
341
|
+
```
|
342
|
+
|
343
|
+
### Schema
|
344
|
+
|
345
|
+
Those calls allow to inspect the schema for a shotgun site.
|
346
|
+
|
347
|
+
#### Entity
|
348
|
+
|
349
|
+
```ruby
|
350
|
+
client.assets.schema
|
351
|
+
```
|
352
|
+
|
353
|
+
#### Entity fields
|
354
|
+
|
355
|
+
Fetch the different fields available on an entity type and their definition.
|
356
|
+
|
357
|
+
```ruby
|
358
|
+
fields = client.assets.fields
|
359
|
+
fields.code.name # => "Asset Name"
|
360
|
+
fields.code.properties.summary_default # => "none"
|
361
|
+
```
|
317
362
|
|
318
363
|
### Non implemented calls
|
319
364
|
|
data/lib/shotgun_api_ruby.rb
CHANGED
@@ -5,6 +5,7 @@ module ShotgunApiRuby
|
|
5
5
|
def initialize(connection, type)
|
6
6
|
@connection = connection.dup
|
7
7
|
@type = type
|
8
|
+
@base_url_prefix = @connection.url_prefix
|
8
9
|
@connection.url_prefix = "#{@connection.url_prefix}/entity/#{type}"
|
9
10
|
end
|
10
11
|
|
@@ -52,6 +53,78 @@ module ShotgunApiRuby
|
|
52
53
|
)
|
53
54
|
end
|
54
55
|
|
56
|
+
def create(attributes)
|
57
|
+
resp =
|
58
|
+
@connection.post('', attributes.to_json) do |req|
|
59
|
+
req.headers['Content-Type'] = 'application/json'
|
60
|
+
end
|
61
|
+
|
62
|
+
resp_body = JSON.parse(resp.body)
|
63
|
+
|
64
|
+
if resp.status >= 300
|
65
|
+
raise "Error while creating #{type}# with #{attributes}: #{resp_body['errors']}"
|
66
|
+
end
|
67
|
+
|
68
|
+
entity = resp_body["data"]
|
69
|
+
Entity.new(
|
70
|
+
entity['type'],
|
71
|
+
OpenStruct.new(entity['attributes']),
|
72
|
+
entity['relationships'],
|
73
|
+
entity['id'],
|
74
|
+
entity['links']
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
def update(id, changes)
|
79
|
+
return find(id) if changes.empty?
|
80
|
+
|
81
|
+
resp =
|
82
|
+
@connection.put(id.to_s, changes.to_json) do |req|
|
83
|
+
req.headers['Content-Type'] = 'application/json'
|
84
|
+
end
|
85
|
+
|
86
|
+
resp_body = JSON.parse(resp.body)
|
87
|
+
|
88
|
+
if resp.status >= 300
|
89
|
+
raise "Error while updating #{type}##{id} with #{changes}: #{resp_body['errors']}"
|
90
|
+
end
|
91
|
+
|
92
|
+
entity = resp_body["data"]
|
93
|
+
Entity.new(
|
94
|
+
entity['type'],
|
95
|
+
OpenStruct.new(entity['attributes']),
|
96
|
+
entity['relationships'],
|
97
|
+
entity['id'],
|
98
|
+
entity['links']
|
99
|
+
)
|
100
|
+
end
|
101
|
+
|
102
|
+
def delete(id)
|
103
|
+
resp =
|
104
|
+
@connection.delete(id.to_s) do |req|
|
105
|
+
req.headers['Content-Type'] = 'application/json'
|
106
|
+
end
|
107
|
+
|
108
|
+
if resp.status >= 300
|
109
|
+
resp_body = JSON.parse(resp.body)
|
110
|
+
raise "Error while deleting #{type}##{id}: #{resp_body['errors']}"
|
111
|
+
end
|
112
|
+
|
113
|
+
true
|
114
|
+
end
|
115
|
+
|
116
|
+
def revive(id)
|
117
|
+
resp =
|
118
|
+
@connection.post("#{id}?revive=true")
|
119
|
+
|
120
|
+
if resp.status >= 300
|
121
|
+
resp_body = JSON.parse(resp.body)
|
122
|
+
raise "Error while reviving #{type}##{id}: #{resp_body['errors']}"
|
123
|
+
end
|
124
|
+
|
125
|
+
true
|
126
|
+
end
|
127
|
+
|
55
128
|
def all(
|
56
129
|
fields: nil,
|
57
130
|
logical_operator: 'and',
|
@@ -148,7 +221,6 @@ module ShotgunApiRuby
|
|
148
221
|
req.headers['Content-Type'] = 'application/vnd+shotgun.api3_hash+json'
|
149
222
|
end
|
150
223
|
req.body = params.to_h.merge(filters: filter).to_json
|
151
|
-
pp JSON.parse(req.body)
|
152
224
|
end
|
153
225
|
resp_body = JSON.parse(resp.body)
|
154
226
|
|
@@ -167,6 +239,18 @@ module ShotgunApiRuby
|
|
167
239
|
end
|
168
240
|
end
|
169
241
|
|
242
|
+
def schema_client
|
243
|
+
@schema_client ||= Schema.new(connection, type, @base_url_prefix)
|
244
|
+
end
|
245
|
+
|
246
|
+
def schema
|
247
|
+
schema_client.read
|
248
|
+
end
|
249
|
+
|
250
|
+
def fields
|
251
|
+
schema_client.fields
|
252
|
+
end
|
253
|
+
|
170
254
|
private
|
171
255
|
|
172
256
|
def filters_are_simple?(filters)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ShotgunApiRuby
|
4
|
+
class Entities
|
5
|
+
class Schema
|
6
|
+
def initialize(connection, type, base_url_prefix)
|
7
|
+
@connection = connection.dup
|
8
|
+
@type = type
|
9
|
+
@connection.url_prefix = "#{base_url_prefix}/schema/#{type}"
|
10
|
+
end
|
11
|
+
attr_reader :type, :connection
|
12
|
+
|
13
|
+
def read
|
14
|
+
resp = @connection.get('')
|
15
|
+
|
16
|
+
if resp.status >= 300
|
17
|
+
raise "Error while read schema for #{type}: #{resp.body}"
|
18
|
+
end
|
19
|
+
|
20
|
+
resp_body = JSON.parse(resp.body)
|
21
|
+
|
22
|
+
OpenStruct.new(
|
23
|
+
resp_body["data"].transform_values{ |v| v["value"] }
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
27
|
+
def fields
|
28
|
+
resp = @connection.get('fields')
|
29
|
+
resp_body = JSON.parse(resp.body)
|
30
|
+
|
31
|
+
if resp.status >= 300
|
32
|
+
raise "Error while read schema fields for #{type}: #{resp.body}"
|
33
|
+
end
|
34
|
+
|
35
|
+
OpenStruct.new(
|
36
|
+
resp_body["data"].transform_values do |value|
|
37
|
+
OpenStruct.new(
|
38
|
+
value.transform_values do |attribute|
|
39
|
+
attribute["value"]
|
40
|
+
end.merge(
|
41
|
+
properties: OpenStruct.new(value["properties"].transform_values{ |prop| prop["value"] })
|
42
|
+
)
|
43
|
+
)
|
44
|
+
end
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/shotgun_api_ruby.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
|
19
19
|
spec.metadata["homepage_uri"] = spec.homepage
|
20
20
|
spec.metadata["source_code_uri"] = "https://github.com/shotgunsoftware/shotgun_api_ruby"
|
21
|
-
|
21
|
+
spec.metadata['changelog_uri'] = "https://github.com/shotgunsoftware/shotgun_api_ruby/blob/main/CHANGELOG.md"
|
22
22
|
|
23
23
|
# Specify which files should be added to the gem when it is released.
|
24
24
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shotgun_api_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis <Zaratan> Pasin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -210,7 +210,9 @@ files:
|
|
210
210
|
- ".ruby-gemset"
|
211
211
|
- ".ruby-version"
|
212
212
|
- ".travis.yml"
|
213
|
+
- CHANGELOG.md
|
213
214
|
- Gemfile
|
215
|
+
- Gemfile.lock
|
214
216
|
- LICENSE.txt
|
215
217
|
- README.md
|
216
218
|
- Rakefile
|
@@ -221,6 +223,7 @@ files:
|
|
221
223
|
- lib/shotgun_api_ruby/client.rb
|
222
224
|
- lib/shotgun_api_ruby/entities.rb
|
223
225
|
- lib/shotgun_api_ruby/entities/params.rb
|
226
|
+
- lib/shotgun_api_ruby/entities/schema.rb
|
224
227
|
- lib/shotgun_api_ruby/entity.rb
|
225
228
|
- lib/shotgun_api_ruby/preferences.rb
|
226
229
|
- lib/shotgun_api_ruby/server_info.rb
|
@@ -232,6 +235,7 @@ licenses:
|
|
232
235
|
metadata:
|
233
236
|
homepage_uri: https://github.com/shotgunsoftware/shotgun_api_ruby
|
234
237
|
source_code_uri: https://github.com/shotgunsoftware/shotgun_api_ruby
|
238
|
+
changelog_uri: https://github.com/shotgunsoftware/shotgun_api_ruby/blob/main/CHANGELOG.md
|
235
239
|
post_install_message:
|
236
240
|
rdoc_options: []
|
237
241
|
require_paths:
|
@@ -247,7 +251,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
251
|
- !ruby/object:Gem::Version
|
248
252
|
version: '0'
|
249
253
|
requirements: []
|
250
|
-
rubygems_version: 3.1.
|
254
|
+
rubygems_version: 3.1.4
|
251
255
|
signing_key:
|
252
256
|
specification_version: 4
|
253
257
|
summary: Gem to interact easily with Shotgun REST api.
|