sony-ci-api 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e46eaec1fb159a4878b3de71bb97d137edac1fa
4
- data.tar.gz: aec8169706b592d208d5450104e9db8726b8c6b1
3
+ metadata.gz: 78ddca4a90c4040cd7dd9061255f8093be1f6ad0
4
+ data.tar.gz: 7dc66ce63747e28bba420c2002a8ee521559060c
5
5
  SHA512:
6
- metadata.gz: 495f880cc910fe823189d0bf2f5ba780fbf65a511f9eec51a5e8dcd06a9ad149efe67a4cbc6282bde04f22334620dccd6346273d735f34d171146a589b9f522c
7
- data.tar.gz: 703f9211ff50685b2144fe96b6e8428bf2453d718618e2c5b90730a789899e37b04dab2c10e440d9e4e6f1916906801d28b0bdf926fe673004c3266af8e652dc
6
+ metadata.gz: cb0604d3a6b3b1dabafc68c8ea32637b5855fcc9bd747e1eb2d4ef5c02c826100160c983432f09df973aa7533d183173483fe6cf7779f7318046dbefaf39fd49
7
+ data.tar.gz: d037bef8500d5b8f45f6e9f363306ee4871ce295a9e38e260a132861352368040183a4a4e7395a4bfbd30b825d86487f9e75b9cf56a90b437487c1e2da3c4bb6
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/sony-ci-api/sony_ci_admin'
4
+
5
+ args = begin
6
+ Hash[ARGV.slice_before { |a| a.match(/^--/) }.to_a.map { |a| [a[0].gsub(/^--/, ''), a[1..-1]] }]
7
+ rescue
8
+ {}
9
+ end
10
+
11
+ ci = SonyCiAdmin.new(
12
+ # verbose: true,
13
+ credentials_path: 'ci.yml')
14
+
15
+ begin
16
+ case args.keys.sort
17
+
18
+ when ['log', 'up']
19
+ fail ArgumentError.new if args['log'].empty? || args['up'].empty?
20
+ args['up'].each { |path| ci.upload(path, args['log'].first) }
21
+
22
+ when ['down']
23
+ fail ArgumentError.new if args['down'].empty?
24
+ args['down'].each { |id| puts ci.download(id) }
25
+
26
+ when ['list']
27
+ fail ArgumentError.new unless args['list'].empty?
28
+ ci.each { |asset| puts "#{asset['name']}\t#{asset['id']}" }
29
+
30
+ when ['recheck']
31
+ fail ArgumentError.new if args['recheck'].empty?
32
+ args['recheck'].each do |file|
33
+ File.foreach(file) do |line|
34
+ line.chomp!
35
+ id = line.split("\t")[2]
36
+ detail = ci.detail(id).to_s.gsub("\n", ' ')
37
+ puts line + "\t" + detail
38
+ end
39
+ end
40
+
41
+ else
42
+ fail ArgumentError.new
43
+ end
44
+ rescue ArgumentError
45
+ abort 'Usage: --up GLOB --log LOG_FILE | --down ID | --list | --recheck LOG_FILE'
46
+ end
@@ -0,0 +1,2 @@
1
+ require_relative 'sony-ci-api/sony_ci_basic'
2
+ require_relative 'sony-ci-api/sony_ci_admin'
@@ -6,32 +6,39 @@ require_relative 'sony_ci_basic'
6
6
  class SonyCiAdmin < SonyCiBasic
7
7
  include Enumerable
8
8
 
9
+ # Upload a document to Ci. Underlying API treats large and small files
10
+ # differently, but this should treat both alike.
9
11
  def upload(file_path, log_file)
10
12
  Uploader.new(self, file_path, log_file).upload
11
13
  end
12
14
 
15
+ # Just the names of items in the workspace. This may include directories.
13
16
  def list_names
14
17
  list.map { |item| item['name'] } - ['Workspace']
15
18
  # A self reference is present even in an empty workspace.
16
19
  end
17
20
 
21
+ # Full metadata for a windowed set of items.
18
22
  def list(limit=50, offset=0)
19
23
  Lister.new(self).list(limit, offset)
20
24
  end
21
25
 
26
+ # Iterate over all items.
22
27
  def each
23
28
  Lister.new(self).each { |asset| yield asset }
24
29
  end
25
30
 
31
+ # Delete items by asset ID.
26
32
  def delete(asset_id)
27
33
  Deleter.new(self).delete(asset_id)
28
34
  end
29
35
 
36
+ # Get detailed metadata by asset ID.
30
37
  def detail(asset_id)
31
38
  Detailer.new(self).detail(asset_id)
32
39
  end
33
40
 
34
- class CiClient
41
+ class CiClient #:nodoc:
35
42
  # This class hierarchy might be excessive, but it gives us:
36
43
  # - a single place for the `perform` method
37
44
  # - and an isolated container for related private methods
@@ -47,7 +54,7 @@ class SonyCiAdmin < SonyCiBasic
47
54
  end
48
55
  end
49
56
 
50
- class Detailer < CiClient
57
+ class Detailer < CiClient #:nodoc:
51
58
  def initialize(ci)
52
59
  @ci = ci
53
60
  end
@@ -60,7 +67,7 @@ class SonyCiAdmin < SonyCiBasic
60
67
  end
61
68
  end
62
69
 
63
- class Deleter < CiClient
70
+ class Deleter < CiClient #:nodoc:
64
71
  def initialize(ci)
65
72
  @ci = ci
66
73
  end
@@ -72,7 +79,7 @@ class SonyCiAdmin < SonyCiBasic
72
79
  end
73
80
  end
74
81
 
75
- class Lister < CiClient
82
+ class Lister < CiClient #:nodoc:
76
83
  include Enumerable
77
84
 
78
85
  def initialize(ci)
@@ -99,7 +106,7 @@ class SonyCiAdmin < SonyCiBasic
99
106
  end
100
107
  end
101
108
 
102
- class Uploader < CiClient
109
+ class Uploader < CiClient #:nodoc:
103
110
  def initialize(ci, path, log_path)
104
111
  @ci = ci
105
112
  @path = path
@@ -172,49 +179,3 @@ class SonyCiAdmin < SonyCiBasic
172
179
  end
173
180
  end
174
181
 
175
- if __FILE__ == $PROGRAM_NAME
176
- args = begin
177
- Hash[ARGV.slice_before { |a| a.match(/^--/) }.to_a.map { |a| [a[0].gsub(/^--/, ''), a[1..-1]] }]
178
- rescue
179
- {}
180
- end
181
-
182
- ci = Ci.new(
183
- # verbose: true,
184
- credentials_path: Rails.root + 'config/ci.yml')
185
-
186
- begin
187
- case args.keys.sort
188
-
189
- when ['log', 'up']
190
- fail ArgumentError.new if args['log'].empty? || args['up'].empty?
191
- args['up'].each { |path| ci.upload(path, args['log'].first) }
192
-
193
- when ['down']
194
- fail ArgumentError.new if args['down'].empty?
195
- args['down'].each { |id| puts ci.download(id) }
196
-
197
- when ['list']
198
- fail ArgumentError.new unless args['list'].empty?
199
- ci.each { |asset| puts "#{asset['name']}\t#{asset['id']}" }
200
-
201
- when ['recheck']
202
- fail ArgumentError.new if args['recheck'].empty?
203
- args['recheck'].each do |file|
204
- File.foreach(file) do |line|
205
- line.chomp!
206
- id = line.split("\t")[2]
207
- detail = ci.detail(id).to_s.gsub("\n", ' ')
208
- puts line + "\t" + detail
209
- end
210
- end
211
-
212
- else
213
- fail ArgumentError.new
214
- end
215
- rescue ArgumentError
216
- abort 'Usage: --up GLOB --log LOG_FILE | --down ID | --list | --recheck LOG_FILE'
217
- end
218
-
219
- end
220
-
@@ -7,6 +7,7 @@ class SonyCiBasic
7
7
  attr_reader :verbose
8
8
  attr_reader :workspace_id
9
9
 
10
+ # Either +credentials_path+ or a +credentials+ object itself must be supplied.
10
11
  def initialize(opts={}) # rubocop:disable PerceivedComplexity, CyclomaticComplexity
11
12
  unrecognized_opts = opts.keys - [:verbose, :credentials_path, :credentials]
12
13
  fail "Unrecognized options #{unrecognized_opts}" unless unrecognized_opts == []
@@ -44,11 +45,12 @@ class SonyCiBasic
44
45
  @workspace_id = credentials['workspace_id']
45
46
  end
46
47
 
48
+ # Generate a temporary download URL for an asset.
47
49
  def download(asset_id)
48
50
  Downloader.new(self).download(asset_id)
49
51
  end
50
52
 
51
- class CiClient
53
+ class CiClient #:nodoc:
52
54
  # This class hierarchy might be excessive, but it gives us:
53
55
  # - a single place for the `perform` method
54
56
  # - and an isolated container for related private methods
@@ -64,7 +66,7 @@ class SonyCiBasic
64
66
  end
65
67
  end
66
68
 
67
- class Downloader < CiClient
69
+ class Downloader < CiClient #:nodoc:
68
70
  @@cache = {}
69
71
 
70
72
  def initialize(ci)
@@ -84,49 +86,3 @@ class SonyCiBasic
84
86
  end
85
87
  end
86
88
  end
87
-
88
- if __FILE__ == $PROGRAM_NAME
89
- args = begin
90
- Hash[ARGV.slice_before { |a| a.match(/^--/) }.to_a.map { |a| [a[0].gsub(/^--/, ''), a[1..-1]] }]
91
- rescue
92
- {}
93
- end
94
-
95
- ci = Ci.new(
96
- # verbose: true,
97
- credentials_path: Rails.root + 'config/ci.yml')
98
-
99
- begin
100
- case args.keys.sort
101
-
102
- when ['log', 'up']
103
- fail ArgumentError.new if args['log'].empty? || args['up'].empty?
104
- args['up'].each { |path| ci.upload(path, args['log'].first) }
105
-
106
- when ['down']
107
- fail ArgumentError.new if args['down'].empty?
108
- args['down'].each { |id| puts ci.download(id) }
109
-
110
- when ['list']
111
- fail ArgumentError.new unless args['list'].empty?
112
- ci.each { |asset| puts "#{asset['name']}\t#{asset['id']}" }
113
-
114
- when ['recheck']
115
- fail ArgumentError.new if args['recheck'].empty?
116
- args['recheck'].each do |file|
117
- File.foreach(file) do |line|
118
- line.chomp!
119
- id = line.split("\t")[2]
120
- detail = ci.detail(id).to_s.gsub("\n", ' ')
121
- puts line + "\t" + detail
122
- end
123
- end
124
-
125
- else
126
- fail ArgumentError.new
127
- end
128
- rescue ArgumentError
129
- abort 'Usage: --up GLOB --log LOG_FILE | --down ID | --list | --recheck LOG_FILE'
130
- end
131
-
132
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sony-ci-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuck McCallum
@@ -12,12 +12,15 @@ date: 2015-05-28 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
15
- executables: []
15
+ executables:
16
+ - sony-ci-api
16
17
  extensions: []
17
18
  extra_rdoc_files: []
18
19
  files:
19
- - lib/sony_ci_admin.rb
20
- - lib/sony_ci_basic.rb
20
+ - bin/sony-ci-api
21
+ - lib/sony-ci-api.rb
22
+ - lib/sony-ci-api/sony_ci_admin.rb
23
+ - lib/sony-ci-api/sony_ci_basic.rb
21
24
  homepage: https://github.com/WGBH/sony-ci-api
22
25
  licenses:
23
26
  - MIT