vidispine 1.5.5 → 1.6.0
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/lib/vidispine/api/client/http_client.rb +21 -10
- data/lib/vidispine/api/client.rb +2 -1
- data/lib/vidispine/api/utilities.rb +62 -33
- data/lib/vidispine/version.rb +1 -1
- 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: 42f586329307e5534298c0619169e8d2b2a5f78d
|
4
|
+
data.tar.gz: ecc3b8ba4c3472090ff6c45f48a263e624e95b9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6dd1740b880a7730fe6786aa8cc30891b79a0cf641671f8a10f76472dae73c16fda520ba77df3aaf1eb68f9504b588ff76383288bb7800ffc3c4ce3921273ba
|
7
|
+
data.tar.gz: 4fe948a108b5ce5d23150bb2b2d3d5facaa8403066b4f5712b0b90f924d4231f1e7edc40b24ea8cc082b2f9e4f608a65b6a9e0c410a9a43e3134b821b203e271
|
@@ -45,22 +45,21 @@ module Vidispine
|
|
45
45
|
|
46
46
|
@default_query_data = args[:default_query_data] || { }
|
47
47
|
|
48
|
-
# @user_agent_default = "#{@hostname}:#{@username} Ruby SDK Version #{Vidispine::VERSION}"
|
49
|
-
|
50
48
|
@username = args[:username] || DEFAULT_USERNAME
|
51
49
|
@password = args[:password] || DEFAULT_PASSWORD
|
52
50
|
|
53
51
|
@authorization_header_key = args.fetch(:authorization_header_key, 'Authorization')
|
54
52
|
@authorization_header_value = args.fetch(:authorization_header_value, %(Basic #{["#{username}:#{password}"].pack('m').delete("\r\n")}))
|
55
53
|
|
56
|
-
|
57
|
-
|
54
|
+
user_agent = args.fetch(:user_agent, false)
|
55
|
+
content_type = args.fetch(:content_type_header, DEFAULT_HEADER_CONTENT_TYPE)
|
56
|
+
accept_header = args.fetch(:accept_header, args.fetch(:accepts_header, DEFAULT_HEADER_ACCEPTS))
|
58
57
|
|
59
|
-
@default_request_headers = {
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
58
|
+
@default_request_headers = { }
|
59
|
+
@default_request_headers['Content-Type'] = content_type if content_type
|
60
|
+
@default_request_headers['Accept'] = accept_header if accept_header
|
61
|
+
@default_request_headers[@authorization_header_key] = @authorization_header_value if @authorization_header_key
|
62
|
+
@default_request_headers['User-Agent'] = user_agent if user_agent
|
64
63
|
|
65
64
|
@log_request_body = args.fetch(:log_request_body, true)
|
66
65
|
@log_response_body = args.fetch(:log_response_body, true)
|
@@ -93,6 +92,18 @@ module Vidispine
|
|
93
92
|
http
|
94
93
|
end
|
95
94
|
|
95
|
+
def user_agent=(value)
|
96
|
+
if (value)
|
97
|
+
default_request_headers['User-Agent'] = value
|
98
|
+
else
|
99
|
+
default_request_headers.delete('User-Agent')
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def user_agent
|
104
|
+
default_request_headers['User-Agent']
|
105
|
+
end
|
106
|
+
|
96
107
|
# Formats a HTTPRequest or HTTPResponse body for log output.
|
97
108
|
# @param [HTTPRequest|HTTPResponse] obj
|
98
109
|
# @return [String]
|
@@ -137,7 +148,7 @@ module Vidispine
|
|
137
148
|
case response.content_type
|
138
149
|
when 'application/json'
|
139
150
|
response_body.empty? ? response_body : JSON.parse(response_body) # rescue response
|
140
|
-
|
151
|
+
else
|
141
152
|
response_body
|
142
153
|
end
|
143
154
|
end
|
data/lib/vidispine/api/client.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'logger'
|
2
|
-
|
2
|
+
require 'vidispine/version'
|
3
3
|
require 'vidispine/api/client/http_client'
|
4
4
|
require 'vidispine/api/client/requests'
|
5
5
|
|
@@ -19,6 +19,7 @@ module Vidispine
|
|
19
19
|
# APInoAuth Path
|
20
20
|
@api_noauth_endpoint_prefix = args.fetch(:api_noauth_endpoint_prefix, 'APInoauth')
|
21
21
|
|
22
|
+
args.fetch(:user_agent, "Vidispine Ruby SDK v#{Vidispine::VERSION}")
|
22
23
|
@http_client = HTTPClient.new(args)
|
23
24
|
@logger = http_client.logger
|
24
25
|
end
|
@@ -41,14 +41,24 @@ module Vidispine
|
|
41
41
|
|
42
42
|
# Tries to find a collection using either the collection id, name, or a file path with a collection name position.
|
43
43
|
# For use in other methods that need to perform the same type of lookup
|
44
|
-
# @
|
45
|
-
# @
|
46
|
-
# @
|
44
|
+
# @args [Hash]
|
45
|
+
# @option args [Hash] :collection
|
46
|
+
# @option args [String] :collection_id
|
47
|
+
# @option args [String] :collection_name
|
48
|
+
# @option args [Array] :collections (nil) If not nil then the each element will be run through
|
49
|
+
# determine_collection and the array returned
|
50
|
+
# @option args [String] :file_path Used when :file_path_collection_name_position is set
|
51
|
+
# @option args [Integer] :file_path_collection_name_position Will split the file path and be used as the index
|
52
|
+
# for the collection name location
|
53
|
+
#
|
47
54
|
def determine_collection(args, options = { })
|
55
|
+
collections = args[:collections]
|
56
|
+
return collections.map { |v| determine_collection(v, options) } if collections.is_a?(Array)
|
57
|
+
|
48
58
|
collection = args[:collection] || { }
|
49
59
|
|
50
60
|
# 3 Get Collection
|
51
|
-
collection_id = args[:collection_id] || collection['id']
|
61
|
+
collection_id = args[:collection_id] || collection[:id] || collection['id']
|
52
62
|
unless collection_id
|
53
63
|
collection_name = args[:collection_name] || args[:name]
|
54
64
|
unless collection_name
|
@@ -541,6 +551,7 @@ module Vidispine
|
|
541
551
|
#
|
542
552
|
# @param [Hash] options
|
543
553
|
# @option options [Boolean] :add_item_to_collection
|
554
|
+
# @option options [Boolean] :wait_for_import_job (true)
|
544
555
|
# @option options [Boolean] :wait_for_transcode_job (false)
|
545
556
|
# @option options [Boolean] :skip_transcode_if_shape_with_tag_exists (true)
|
546
557
|
# @option options [Boolean] :use_placeholder_import (true)
|
@@ -605,7 +616,9 @@ module Vidispine
|
|
605
616
|
|
606
617
|
# Allow the file to be passed in
|
607
618
|
file = args[:file]
|
608
|
-
|
619
|
+
if file
|
620
|
+
file_id = file['id']
|
621
|
+
else
|
609
622
|
file_id = args[:file_id]
|
610
623
|
file = { 'id' => file_id }
|
611
624
|
end
|
@@ -617,6 +630,8 @@ module Vidispine
|
|
617
630
|
raise "Error Getting Storage File. '#{storage_file_get_response.inspect}'" unless storage_file_get_response and storage_file_get_response['id']
|
618
631
|
_response[:storage_file_get_response] = storage_file_get_response
|
619
632
|
|
633
|
+
file_found = true
|
634
|
+
|
620
635
|
file = storage_file_get_response
|
621
636
|
else
|
622
637
|
storage_file_get_or_create_response = storage_file_get_or_create(storage_id, file_path_relative_to_storage_path, :extended_response => true)
|
@@ -627,27 +642,23 @@ module Vidispine
|
|
627
642
|
|
628
643
|
if file
|
629
644
|
_response[:item] = item = file['item']
|
630
|
-
file_found = true
|
631
645
|
end
|
632
646
|
|
633
647
|
_response[:file_already_existed] = file_found
|
634
648
|
_response[:item_already_existed] = !!item
|
635
|
-
return _response if item
|
649
|
+
return _response if item # We already have an item so nothing to do
|
636
650
|
|
637
|
-
file_id
|
651
|
+
file_id ||= file['id']
|
638
652
|
|
639
|
-
|
640
|
-
|
641
|
-
|
642
|
-
|
643
|
-
|
644
|
-
|
645
|
-
|
646
|
-
_response[:item] = item = import_placeholder(placeholder_args)
|
647
|
-
end
|
648
|
-
item_id = item['id']
|
649
|
-
shape = item['shape']
|
653
|
+
# 4.2 Create a Placeholder
|
654
|
+
logger.debug { 'Creating Placeholder.' }
|
655
|
+
#placeholder_args = args[:placeholder_args] ||= { :container => 1, :video => 1, :metadata_document => { :group => [ 'Film' ], :timespan => [ { :field => [ { :name => metadata_file_path_field_id, :value => [ { :value => vidispine_file_path } ] } ], :start => '-INF', :end => '+INF' } ] } }
|
656
|
+
#placeholder_args = args[:placeholder_args] ||= { :container => 1, :video => 1, :metadata_document => { :timespan => [ { :start => '-INF', :end => '+INF' }.merge(_metadata_as_fields) ] } }
|
657
|
+
#placeholder_args = args[:placeholder_args] ||= { :container => 1, :metadata_document => { :timespan => [ { :start => '-INF', :end => '+INF' }.merge(_metadata_as_fields) ] } }
|
658
|
+
placeholder_args = args[:placeholder_args] ||= { :container => 1, :metadata_document => metadata_document }
|
659
|
+
_response[:item] = item = import_placeholder(placeholder_args)
|
650
660
|
|
661
|
+
item_id = item['id']
|
651
662
|
raise "Error Creating Placeholder: #{item.inspect}" unless item_id
|
652
663
|
|
653
664
|
# Add any additional metadata (Vidispine will only take one group at a time)
|
@@ -657,18 +668,26 @@ module Vidispine
|
|
657
668
|
|
658
669
|
if options[:add_item_to_collection]
|
659
670
|
logger.debug { 'Determining Collection to Add the Item to.' }
|
660
|
-
|
661
|
-
|
662
|
-
|
671
|
+
collections = determine_collection(args, options)
|
672
|
+
if collections.is_a?(Array)
|
673
|
+
single_collection = false
|
674
|
+
_response[:collections] = collections
|
675
|
+
else
|
676
|
+
single_collection = true
|
677
|
+
_response[:collection] = collections
|
678
|
+
collections = [ collections ]
|
679
|
+
end
|
680
|
+
collection_object_add_responses = collections.map do |collection|
|
681
|
+
collection_id = collection['id']
|
682
|
+
logger.debug { 'Adding Item to Collection.' }
|
683
|
+
collection_object_add(:collection_id => collection_id, :object_id => item_id)
|
684
|
+
end
|
663
685
|
|
664
|
-
|
665
|
-
collection_object_add_response = collection_object_add(:collection_id => collection_id, :object_id => item_id)
|
666
|
-
_response[:collection_object_add] = collection_object_add_response
|
686
|
+
_response[:collection_object_add] = single_collection ? collection_object_add_responses.first : collection_object_add_responses
|
667
687
|
end
|
668
688
|
|
669
|
-
create_thumbnails = args.fetch(:create_thumbnails, true)
|
670
|
-
create_posters = args.fetch(:create_posters, 3)
|
671
689
|
|
690
|
+
shape = item['shape']
|
672
691
|
unless shape
|
673
692
|
import_args_in = args[:import_args]
|
674
693
|
|
@@ -697,15 +716,22 @@ module Vidispine
|
|
697
716
|
end
|
698
717
|
raise "Error Creating Item Shape Import Job. Response: #{item_shape_import_response.inspect}" unless job_id
|
699
718
|
|
700
|
-
job_monitor_response = wait_for_job_completion(:job_id => job_id) { |env|
|
701
|
-
logger.debug { "Waiting for Item Shape Import Job to Complete. Time Elapsed: #{Time.now - env[:time_started]} seconds" }
|
702
|
-
}
|
703
|
-
last_response = job_monitor_response[:last_response]
|
704
|
-
raise "Error Adding file As Original Shape. Response: #{last_response.inspect}" unless last_response['status'] == 'FINISHED'
|
705
719
|
|
706
720
|
# 7. Generate the Transcode of the item
|
707
721
|
transcode_tag = args.fetch(:transcode_tag, 'lowres')
|
708
|
-
|
722
|
+
should_transcode = transcode_tag and !transcode_tag.empty? and transcode_tag.to_s.downcase != 'false'
|
723
|
+
|
724
|
+
should_wait_for_import_job_completion = should_transcode || options.fetch(:wait_for_import_job, true)
|
725
|
+
if should_wait_for_import_job_completion
|
726
|
+
job_monitor_response = wait_for_job_completion(:job_id => job_id) { |env|
|
727
|
+
logger.debug { "Waiting for Item Shape Import Job to Complete. Time Elapsed: #{Time.now - env[:time_started]} seconds" }
|
728
|
+
}
|
729
|
+
last_response = job_monitor_response[:last_response]
|
730
|
+
_response[:item_shape_import_job_result] = last_response
|
731
|
+
raise "Error Importing File. Response: #{last_response.inspect}" unless last_response['status'] == 'FINISHED'
|
732
|
+
end
|
733
|
+
|
734
|
+
if should_transcode
|
709
735
|
wait_for_transcode_job = options[:wait_for_transcode_job]
|
710
736
|
skip_transcode_if_shape_with_tag_exists = options.fetch(:skip_transcode_if_shape_with_tag_exists, true)
|
711
737
|
[*transcode_tag].each do |_transcode_tag|
|
@@ -726,6 +752,9 @@ module Vidispine
|
|
726
752
|
end
|
727
753
|
|
728
754
|
# 8. Generate the Thumbnails and Poster Frame
|
755
|
+
create_thumbnails = args.fetch(:create_thumbnails, true)
|
756
|
+
create_posters = args.fetch(:create_posters, 3)
|
757
|
+
|
729
758
|
if (create_thumbnails or create_posters)
|
730
759
|
logger.debug { 'Generating Thumbnails(s) and Poster Frame.' }
|
731
760
|
args_out = { :item_id => item_id }
|
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.
|
4
|
+
version: 1.6.0
|
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-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|