vidispine 1.5.0 → 1.5.1
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fad78c8b766bf87d952d77f3a73a667d887b064f
|
4
|
+
data.tar.gz: eb13dce39554cdd7a0b4b1b00e212ecb7a5abe72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 18a6979587fe7a8d85f90dcb248c7cb45558e6d8393a0064a921fa6d8000a7206b33b5f9d483f5bf5fee1ff7d074cfd6905e58b8849f3e9989361991efed13bf
|
7
|
+
data.tar.gz: 867ace58974e2d2615bfba584b00585010db7438aeff9dd6dc6c520944898be4990d7f3b9409fd1370e45662340e535885523501245c39526b244656d97a5c86
|
data/lib/vidispine/api/client.rb
CHANGED
@@ -9,7 +9,16 @@ module Vidispine
|
|
9
9
|
|
10
10
|
attr_accessor :http_client, :request, :response, :logger
|
11
11
|
|
12
|
+
attr_accessor :api_endpoint_prefix, :api_noauth_endpoint_prefix
|
13
|
+
|
12
14
|
def initialize(args = { })
|
15
|
+
|
16
|
+
# API Path
|
17
|
+
@api_endpoint_prefix = args.fetch(:api_endpoint_prefix, 'API')
|
18
|
+
|
19
|
+
# APInoAuth Path
|
20
|
+
@api_noauth_endpoint_prefix = args.fetch(:api_noauth_endpoint_prefix, 'APInoauth')
|
21
|
+
|
13
22
|
@http_client = HTTPClient.new(args)
|
14
23
|
@logger = http_client.logger
|
15
24
|
end
|
@@ -20,7 +29,7 @@ module Vidispine
|
|
20
29
|
request.client = self unless request.client
|
21
30
|
options ||= request.options
|
22
31
|
logger.warn { "Request is Missing Required Arguments: #{request.missing_required_arguments.inspect}" } unless request.missing_required_arguments.empty?
|
23
|
-
@response = http_client.
|
32
|
+
@response = http_client.build_and_send_request(request.http_method, { :path => request.path, :query => request.query, :body => request.body }, options)
|
24
33
|
end
|
25
34
|
|
26
35
|
def process_request_using_class(request_class, args, options = { })
|
@@ -137,7 +146,8 @@ module Vidispine
|
|
137
146
|
_args = _data[:arguments_out]
|
138
147
|
_args[:collection_id]
|
139
148
|
end
|
140
|
-
|
149
|
+
path = File.join(api_endpoint_prefix, "/collection/#{collection_id}")
|
150
|
+
http(:delete, path)
|
141
151
|
end
|
142
152
|
|
143
153
|
# @see http://apidoc.vidispine.com/4.2/ref/collection.html#retrieve-the-contents-of-a-collection
|
@@ -147,7 +157,8 @@ module Vidispine
|
|
147
157
|
_args = _data[:arguments_out]
|
148
158
|
_args[:collection_id]
|
149
159
|
end
|
150
|
-
|
160
|
+
path = File.join(api_endpoint_prefix, "/collection/#{collection_id}")
|
161
|
+
http(:get, path)
|
151
162
|
end
|
152
163
|
alias :collection :collection_get
|
153
164
|
|
@@ -158,7 +169,8 @@ module Vidispine
|
|
158
169
|
_args = _data[:arguments_out]
|
159
170
|
_args[:collection_id]
|
160
171
|
end
|
161
|
-
|
172
|
+
path = File.join(api_endpoint_prefix, "collection/#{collection_id}/item")
|
173
|
+
http(:get, path)
|
162
174
|
end
|
163
175
|
alias :collection_items :collection_items_get
|
164
176
|
|
@@ -170,7 +182,8 @@ module Vidispine
|
|
170
182
|
_args = _data[:arguments_out]
|
171
183
|
_args[:collection_id]
|
172
184
|
end
|
173
|
-
|
185
|
+
path = File.join(api_endpoint_prefix, "/collection/#{collection_id}/metadata")
|
186
|
+
http(:get, path)
|
174
187
|
end
|
175
188
|
|
176
189
|
# @see http://apidoc.vidispine.com/4.2/ref/collection.html#update-collection-metadata
|
@@ -317,7 +330,8 @@ module Vidispine
|
|
317
330
|
_args = _data[:arguments_out]
|
318
331
|
_args[:item_id]
|
319
332
|
end
|
320
|
-
|
333
|
+
path = File.join(api_endpoint_prefix, "/item/#{item_id}/collections")
|
334
|
+
http(:get, path)
|
321
335
|
end
|
322
336
|
alias :item_collections :item_collections_get
|
323
337
|
|
@@ -504,7 +518,8 @@ module Vidispine
|
|
504
518
|
query[:priority] = priority if priority
|
505
519
|
query[:jobmetadata] = job_metadata if job_metadata
|
506
520
|
|
507
|
-
|
521
|
+
path = File.join(api_endpoint_prefix, "/item/#{item_id}/shape")
|
522
|
+
http(:post, path, '', :query => query)
|
508
523
|
end
|
509
524
|
|
510
525
|
def item_sidecar_import(args = { }, options = { })
|
@@ -740,12 +755,14 @@ module Vidispine
|
|
740
755
|
def metadata_field_terse_schema(args = { }, options = { })
|
741
756
|
default_options = { :headers => { 'accept' => '*/*' } }
|
742
757
|
_options = default_options.merge(options)
|
743
|
-
|
758
|
+
path = File.join(api_endpoint_prefix, 'metadata-field/terse-schema')
|
759
|
+
http(:get, path, _options)
|
744
760
|
end
|
745
761
|
|
746
762
|
# @see http://apidoc.vidispine.com/4.2/ref/metadata/field.html#get--metadata-field
|
747
763
|
def metadata_fields_get(args = { }, options = { })
|
748
|
-
|
764
|
+
path = File.join(api_endpoint_prefix, 'metadata-field')
|
765
|
+
http(:get, path, options)
|
749
766
|
end
|
750
767
|
alias :metadata_fields :metadata_fields_get
|
751
768
|
|
@@ -936,7 +953,8 @@ module Vidispine
|
|
936
953
|
_args = _data[:arguments_out]
|
937
954
|
_args[:storage_id]
|
938
955
|
end
|
939
|
-
|
956
|
+
path = File.join(api_endpoint_prefix, "storage/#{storage_id ? "#{storage_id}/" : ''}rescan")
|
957
|
+
http(:post, path, '')
|
940
958
|
end
|
941
959
|
|
942
960
|
# @see http://apidoc.vidispine.com/4.2/ref/storage/storage.html#retrieve-list-of-storages
|
@@ -961,7 +979,7 @@ module Vidispine
|
|
961
979
|
alias :storages :storages_get
|
962
980
|
|
963
981
|
def version(args = { }, options = { })
|
964
|
-
http(:get, '
|
982
|
+
http(:get, File.join(api_endpoint_prefix, 'version'))
|
965
983
|
end
|
966
984
|
|
967
985
|
# @!endgroup API Endpoints
|
@@ -25,7 +25,7 @@ module Vidispine
|
|
25
25
|
|
26
26
|
DEFAULT_USERNAME = 'admin'
|
27
27
|
DEFAULT_PASSWORD = 'password'
|
28
|
-
DEFAULT_BASE_PATH = '
|
28
|
+
DEFAULT_BASE_PATH = '/'
|
29
29
|
|
30
30
|
DEFAULT_HEADER_CONTENT_TYPE = 'application/json; charset=utf-8'
|
31
31
|
DEFAULT_HEADER_ACCEPTS = 'application/json'
|
@@ -40,19 +40,21 @@ module Vidispine
|
|
40
40
|
|
41
41
|
logger.debug { "#{self.class.name}::#{__method__} Arguments: #{args.inspect}" }
|
42
42
|
|
43
|
-
@username = args[:username] || DEFAULT_USERNAME
|
44
|
-
@password = args[:password] || DEFAULT_PASSWORD
|
45
|
-
@authorization_header_value = args[:authorization_header_value]
|
46
|
-
|
47
43
|
@base_uri = args[:base_uri] || "http#{http.use_ssl? ? 's' : ''}://#{http.address}:#{http.port}"
|
48
|
-
@default_base_path = args
|
44
|
+
@default_base_path = args.fetch(:default_base_path, DEFAULT_BASE_PATH)
|
49
45
|
|
50
46
|
@default_query_data = args[:default_query_data] || { }
|
51
47
|
|
52
48
|
# @user_agent_default = "#{@hostname}:#{@username} Ruby SDK Version #{Vidispine::VERSION}"
|
53
49
|
|
54
|
-
@
|
55
|
-
@
|
50
|
+
@username = args[:username] || DEFAULT_USERNAME
|
51
|
+
@password = args[:password] || DEFAULT_PASSWORD
|
52
|
+
|
53
|
+
@authorization_header_key = args.fetch(:authorization_header_key, 'Authorization')
|
54
|
+
@authorization_header_value = args.fetch(:authorization_header_value,
|
55
|
+
%(Basic #{["#{username}:#{password}"]
|
56
|
+
.pack('m')
|
57
|
+
.delete("\r\n")}))
|
56
58
|
|
57
59
|
content_type = args[:content_type_header] ||= DEFAULT_HEADER_CONTENT_TYPE
|
58
60
|
accepts = args[:accepts_header] ||= args[:accept_header] || DEFAULT_HEADER_ACCEPTS
|
@@ -144,13 +146,26 @@ module Vidispine
|
|
144
146
|
end
|
145
147
|
end
|
146
148
|
|
149
|
+
# Compiles a full URI
|
150
|
+
#
|
147
151
|
# @param [String] path
|
148
152
|
# @param [Hash|String|Nil] query
|
153
|
+
# @param [Hash] options
|
154
|
+
# @option options [Hash] :default_query_data
|
155
|
+
# @option options [Hash] :default_base_path
|
156
|
+
#
|
149
157
|
# @return [URI]
|
150
|
-
def build_uri(path = '', query = nil)
|
151
|
-
|
158
|
+
def build_uri(path = '', query = nil, options = { })
|
159
|
+
_default_query_data = options.fetch(:default_query_data, default_query_data) || { }
|
160
|
+
_default_base_path = options.fetch(:default_base_path, default_base_path)
|
161
|
+
|
162
|
+
query = { } if query.nil?
|
163
|
+
|
164
|
+
_query = query.is_a?(Hash) ? (default_query_data.merge(query)).map { |k,v| "#{CGI.escape(k.to_s)}=#{CGI.escape(v.respond_to?(:to_s) ? v.to_s : v)}" }.join('&') : query
|
152
165
|
_path = "#{path}#{_query and _query.respond_to?(:empty?) and !_query.empty? ? "?#{_query}" : ''}"
|
153
|
-
|
166
|
+
_path = File.join(_default_base_path, _path) if _default_base_path
|
167
|
+
_path = File.join(base_uri, _path)
|
168
|
+
URI.parse(_path)
|
154
169
|
end
|
155
170
|
|
156
171
|
if RUBY_VERSION.start_with? '1.8.'
|
@@ -163,6 +178,8 @@ module Vidispine
|
|
163
178
|
end
|
164
179
|
end
|
165
180
|
|
181
|
+
# Builds the HTTP request
|
182
|
+
#
|
166
183
|
# @param [Symbol] method_name (:get)
|
167
184
|
# @param [Hash] args
|
168
185
|
# @option args [Hash] :headers ({})
|
@@ -171,7 +188,7 @@ module Vidispine
|
|
171
188
|
# @option args [Any] :body (nil)
|
172
189
|
# @param [Hash] options
|
173
190
|
# @option options [Hash] :default_request_headers (@default_request_headers)
|
174
|
-
def
|
191
|
+
def build_request(method_name = :get, args = { }, options = { })
|
175
192
|
headers = args[:headers] || options[:headers] || { }
|
176
193
|
path = args[:path] || ''
|
177
194
|
query = args[:query] || { }
|
@@ -182,102 +199,59 @@ module Vidispine
|
|
182
199
|
_default_request_headers ||= { }
|
183
200
|
_headers = _default_request_headers.merge(headers)
|
184
201
|
|
185
|
-
@uri = build_uri(path, query)
|
202
|
+
@uri = build_uri(path, query, options)
|
186
203
|
klass_name = request_method_name_to_class_name(method_name)
|
187
204
|
klass = Net::HTTP.const_get(klass_name)
|
188
205
|
|
189
|
-
|
206
|
+
_request = klass.new(@uri.request_uri, _headers)
|
190
207
|
|
191
|
-
if
|
208
|
+
if _request.request_body_permitted?
|
192
209
|
_body = (body and !body.is_a?(String)) ? JSON.generate(body) : body
|
193
210
|
logger.debug { "Processing Body: '#{_body}'" }
|
194
|
-
|
211
|
+
_request.body = _body if _body
|
195
212
|
end
|
196
213
|
|
197
|
-
|
214
|
+
_request
|
215
|
+
end
|
216
|
+
|
217
|
+
# First builds and then sends the HTTP request
|
218
|
+
#
|
219
|
+
# @param [Symbol] method_name (:get)
|
220
|
+
# @param [Hash] args
|
221
|
+
# @option args [Hash] :headers ({})
|
222
|
+
# @option args [String] :path ('')
|
223
|
+
# @option args [Hash] :query ({})
|
224
|
+
# @option args [Any] :body (nil)
|
225
|
+
#
|
226
|
+
# @param [Hash] options
|
227
|
+
# @option options [Hash] :default_request_headers (@default_request_headers)
|
228
|
+
def build_and_send_request(method_name = :get, args = { }, options = { })
|
229
|
+
_request = build_request(method_name, args, options)
|
230
|
+
send_request(_request)
|
198
231
|
end
|
199
232
|
|
200
233
|
def delete(path, options = { })
|
201
|
-
|
202
|
-
base_path = options[:base_path] || ( path.start_with?(@default_base_path) ? '' : @default_base_path )
|
203
|
-
@uri = build_uri(File.join(base_path, path), query)
|
204
|
-
request = Net::HTTP::Delete.new(@uri.request_uri, default_request_headers)
|
205
|
-
send_request(request)
|
234
|
+
build_and_send_request(:delete, { :path => path }, options)
|
206
235
|
end
|
207
236
|
|
208
237
|
def get(path, options = { })
|
209
|
-
|
210
|
-
headers = options[:headers] || { }
|
211
|
-
_default_request_headers = options.fetch(:default_request_headers, default_request_headers) || { }
|
212
|
-
_headers = _default_request_headers.merge(headers)
|
213
|
-
|
214
|
-
query ||= options.fetch(:query, { })
|
215
|
-
base_path = options[:base_path] || ( path.start_with?(@default_base_path) ? '' : @default_base_path )
|
216
|
-
@uri = build_uri(File.join(base_path, path), query)
|
217
|
-
request = Net::HTTP::Get.new(@uri.request_uri, _headers)
|
218
|
-
send_request(request)
|
238
|
+
build_and_send_request(:get, { :path => path }, options)
|
219
239
|
end
|
220
240
|
|
221
241
|
def head(path, options = { })
|
222
|
-
|
223
|
-
headers = options[:headers] || { }
|
224
|
-
_default_request_headers = options.fetch(:default_request_headers, default_request_headers) || { }
|
225
|
-
_headers = _default_request_headers.merge(headers)
|
226
|
-
|
227
|
-
query ||= options.fetch(:query, { })
|
228
|
-
base_path = options[:base_path] || ( path.start_with?(@default_base_path) ? '' : @default_base_path )
|
229
|
-
@uri = build_uri(File.join(base_path, path), query)
|
230
|
-
|
231
|
-
request = Net::HTTP::Head.new(@uri.request_uri, _headers)
|
232
|
-
send_request(request)
|
242
|
+
build_and_send_request(:head, { :path => path }, options)
|
233
243
|
end
|
234
244
|
|
235
245
|
def options(path, options = { })
|
236
|
-
|
237
|
-
headers = options[:headers] || { }
|
238
|
-
_default_request_headers = options.fetch(:default_request_headers, default_request_headers) || { }
|
239
|
-
_headers = _default_request_headers.merge(headers)
|
240
|
-
|
241
|
-
query ||= options.fetch(:query, { })
|
242
|
-
base_path = options[:base_path] || ( path.start_with?(@default_base_path) ? '' : @default_base_path )
|
243
|
-
@uri = build_uri(File.join(base_path, path), query)
|
244
|
-
request = Net::HTTP::Options.new(@uri.request_uri, _headers)
|
245
|
-
send_request(request)
|
246
|
+
build_and_send_request(:options, { :path => path }, options)
|
246
247
|
end
|
247
248
|
|
248
249
|
def put(path, body, options = { })
|
249
|
-
|
250
|
-
headers = options[:headers] || { }
|
251
|
-
_default_request_headers = options.fetch(:default_request_headers, default_request_headers) || { }
|
252
|
-
_headers = _default_request_headers.merge(headers)
|
253
|
-
|
254
|
-
query = options.fetch(:query, { })
|
255
|
-
base_path = options[:base_path] || ( path.start_with?(@default_base_path) ? '' : @default_base_path )
|
256
|
-
@uri = build_uri(File.join(base_path, path), query)
|
257
|
-
request = Net::HTTP::Put.new(@uri.request_uri, _headers)
|
258
|
-
|
259
|
-
body = JSON.generate(body) if body and !body.is_a?(String)
|
260
|
-
|
261
|
-
request.body = body if body
|
262
|
-
send_request(request)
|
250
|
+
build_and_send_request(:put, { :path => path, :body => body }, options)
|
263
251
|
end
|
264
252
|
|
265
253
|
def post(path, body, options = { })
|
266
|
-
|
267
|
-
headers = options[:headers] || { }
|
268
|
-
_default_request_headers = options.fetch(:default_request_headers, default_request_headers) || { }
|
269
|
-
_headers = _default_request_headers.merge(headers)
|
270
|
-
|
271
|
-
query = options.fetch(:query, { })
|
272
|
-
base_path = options[:base_path] || ( path.start_with?(@default_base_path) ? '' : @default_base_path )
|
273
|
-
@uri = build_uri(File.join(base_path, path), query)
|
274
|
-
|
275
|
-
request = Net::HTTP::Post.new(@uri.request_uri, _headers)
|
276
|
-
|
277
|
-
body = JSON.generate(body) if body and !body.is_a?(String)
|
278
|
-
|
279
|
-
request.body = body if body
|
280
|
-
send_request(request)
|
254
|
+
build_and_send_request(:post, { :path => path, :body => body }, options)
|
281
255
|
end
|
282
256
|
|
283
257
|
# HTTPClient
|
@@ -9,7 +9,7 @@ module Vidispine
|
|
9
9
|
class BaseRequest
|
10
10
|
|
11
11
|
HTTP_METHOD = :get
|
12
|
-
HTTP_BASE_PATH = '/API/'
|
12
|
+
HTTP_BASE_PATH = '/API/' # Not used, using client.api_endpoint_prefix instead
|
13
13
|
HTTP_PATH = ''
|
14
14
|
HTTP_SUCCESS_CODE = '200'
|
15
15
|
|
@@ -150,7 +150,7 @@ module Vidispine
|
|
150
150
|
end
|
151
151
|
|
152
152
|
def base_path
|
153
|
-
@base_path ||= self.class::HTTP_BASE_PATH
|
153
|
+
@base_path ||= client.api_endpoint_prefix # self.class::HTTP_BASE_PATH
|
154
154
|
end
|
155
155
|
|
156
156
|
def body_arguments
|
data/lib/vidispine/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vidispine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Whitson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|