sony-ci-api 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/sony-ci-api +1 -1
- data/lib/sony-ci-api.rb +3 -3
- data/lib/sony-ci-api/sony_ci_admin.rb +19 -7
- data/lib/sony-ci-api/sony_ci_basic.rb +3 -3
- data/lib/sony-ci-api/sony_ci_client.rb +4 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c56ac6f9cc51f695641456413698265e1d82ec2e
|
4
|
+
data.tar.gz: dab28c484e7a829b236331ee28888597f72a4872
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 269293d95e6e5af47ab029cc23d7b0496c579d8f5d257852fc555a7158d038abc8e2018a38875bc5a00d7d50c7acbe969227b98d833a7ce131a5674222deacf0
|
7
|
+
data.tar.gz: 145424cd8926db041ec2739cf8e7b05a66ec6a15d599ade73b10498b99017e0e5349974e0593ce441b8380be76185cc024e0d13835cd94d6674199a35f887c7a
|
data/bin/sony-ci-api
CHANGED
data/lib/sony-ci-api.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
require_relative 'sony-ci-api/sony_ci_admin'
|
2
|
-
# Nothing else: The outside world doesn't need to worry
|
3
|
-
# about the particular classes which are required, and
|
4
|
-
# sony_ci_admin.rb loads its own dependencies.
|
2
|
+
# Nothing else: The outside world doesn't need to worry
|
3
|
+
# about the particular classes which are required, and
|
4
|
+
# sony_ci_admin.rb loads its own dependencies.
|
@@ -19,7 +19,7 @@ class SonyCiAdmin < SonyCiBasic
|
|
19
19
|
end
|
20
20
|
|
21
21
|
# Full metadata for a windowed set of items.
|
22
|
-
def list(limit=50, offset=0)
|
22
|
+
def list(limit = 50, offset = 0)
|
23
23
|
Lister.new(self).list(limit, offset)
|
24
24
|
end
|
25
25
|
|
@@ -38,6 +38,10 @@ class SonyCiAdmin < SonyCiBasic
|
|
38
38
|
Detailer.new(self).detail(asset_id)
|
39
39
|
end
|
40
40
|
|
41
|
+
def multi_details(asset_ids, fields)
|
42
|
+
Detailer.new(self).multi_details(asset_ids, fields)
|
43
|
+
end
|
44
|
+
|
41
45
|
class Detailer < SonyCiClient #:nodoc:
|
42
46
|
def initialize(ci)
|
43
47
|
@ci = ci
|
@@ -50,6 +54,17 @@ class SonyCiAdmin < SonyCiBasic
|
|
50
54
|
handle_errors(curl)
|
51
55
|
JSON.parse(curl.body_str)
|
52
56
|
end
|
57
|
+
|
58
|
+
def multi_details(asset_ids, fields)
|
59
|
+
curl = Curl::Easy.http_post('https:''//api.cimediacloud.com/assets/details/bulk',
|
60
|
+
JSON.generate('assetIds' => asset_ids,
|
61
|
+
'fields' => fields)
|
62
|
+
) do |c|
|
63
|
+
add_headers(c, 'application/json')
|
64
|
+
end
|
65
|
+
handle_errors(curl)
|
66
|
+
JSON.parse(curl.body_str)
|
67
|
+
end
|
53
68
|
end
|
54
69
|
|
55
70
|
class Deleter < SonyCiClient #:nodoc:
|
@@ -105,9 +120,7 @@ class SonyCiAdmin < SonyCiBasic
|
|
105
120
|
if file.size >= 5 * 1024 * 1024
|
106
121
|
initiate_multipart_upload(file)
|
107
122
|
part = 0
|
108
|
-
while part
|
109
|
-
part = do_multipart_upload_part(file, part)
|
110
|
-
end
|
123
|
+
part = do_multipart_upload_part(file, part) while part
|
111
124
|
complete_multipart_upload
|
112
125
|
else
|
113
126
|
singlepart_upload(file)
|
@@ -151,7 +164,7 @@ class SonyCiAdmin < SonyCiBasic
|
|
151
164
|
end
|
152
165
|
|
153
166
|
CHUNK_SIZE = 10 * 1024 * 1024
|
154
|
-
|
167
|
+
|
155
168
|
def do_multipart_upload_part(file, part)
|
156
169
|
fragment = file.read(CHUNK_SIZE)
|
157
170
|
return unless fragment
|
@@ -159,7 +172,7 @@ class SonyCiAdmin < SonyCiBasic
|
|
159
172
|
add_headers(c, 'application/octet-stream')
|
160
173
|
end
|
161
174
|
handle_errors(curl)
|
162
|
-
|
175
|
+
part + 1
|
163
176
|
end
|
164
177
|
|
165
178
|
def complete_multipart_upload
|
@@ -170,4 +183,3 @@ class SonyCiAdmin < SonyCiBasic
|
|
170
183
|
end
|
171
184
|
end
|
172
185
|
end
|
173
|
-
|
@@ -9,7 +9,7 @@ class SonyCiBasic
|
|
9
9
|
attr_reader :workspace_id
|
10
10
|
|
11
11
|
# Either +credentials_path+ or a +credentials+ object itself must be supplied.
|
12
|
-
def initialize(opts={}) # rubocop:disable PerceivedComplexity, CyclomaticComplexity
|
12
|
+
def initialize(opts = {}) # rubocop:disable PerceivedComplexity, CyclomaticComplexity
|
13
13
|
unrecognized_opts = opts.keys - [:verbose, :credentials_path, :credentials]
|
14
14
|
fail "Unrecognized options #{unrecognized_opts}" unless unrecognized_opts == []
|
15
15
|
|
@@ -20,7 +20,7 @@ class SonyCiBasic
|
|
20
20
|
credentials = opts[:credentials] || YAML.load_file(opts[:credentials_path])
|
21
21
|
|
22
22
|
credentials.keys.sort.tap do |actual|
|
23
|
-
expected =
|
23
|
+
expected = %w(username password client_id client_secret workspace_id).sort
|
24
24
|
fail "Expected #{expected} in ci credentials, not #{actual}" if actual != expected
|
25
25
|
end
|
26
26
|
|
@@ -60,7 +60,7 @@ class SonyCiBasic
|
|
60
60
|
def download(asset_id)
|
61
61
|
hit = @@cache[asset_id]
|
62
62
|
if !hit || hit[:expires] < Time.now
|
63
|
-
|
63
|
+
|
64
64
|
curl = Curl::Easy.http_get('https'"://api.cimediacloud.com/assets/#{asset_id}/download") do |c|
|
65
65
|
add_headers(c)
|
66
66
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class SonyCiClient #:nodoc:
|
2
|
-
def add_headers(curl, mime=nil)
|
2
|
+
def add_headers(curl, mime = nil)
|
3
3
|
# on_missing and on_failure exist...
|
4
4
|
# but any exceptions are caught and turned into warnings:
|
5
5
|
# You need to check the response code at the end
|
@@ -8,7 +8,8 @@ class SonyCiClient #:nodoc:
|
|
8
8
|
curl.headers['Authorization'] = "Bearer #{@ci.access_token}"
|
9
9
|
curl.headers['Content-Type'] = mime if mime
|
10
10
|
end
|
11
|
+
|
11
12
|
def handle_errors(curl)
|
12
|
-
|
13
|
+
fail "#{curl.status}: #{curl.url}\nHEADERS: #{curl.headers}\nPOST: #{curl.post_body}\nRESPONSE: #{curl.body}" if curl.response_code.to_s !~ /^2../
|
13
14
|
end
|
14
|
-
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sony-ci-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chuck McCallum
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Wrapper for the Sony Ci API (http://developers.cimediacloud.com/)
|
14
14
|
email: chuck_mccallum@wgbh.org
|