vidispine 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +22 -0
- data/README.md +296 -0
- data/Rakefile +2 -0
- data/bin/vidispine +7 -0
- data/bin/vidispine-notification-handler +339 -0
- data/bin/vidispine-utilities-http-server +13 -0
- data/dist/vidispine-1.4.0.gem +0 -0
- data/lib/vidispine.rb +5 -0
- data/lib/vidispine/api/client.rb +981 -0
- data/lib/vidispine/api/client/http_client.rb +291 -0
- data/lib/vidispine/api/client/requests.rb +27 -0
- data/lib/vidispine/api/client/requests/base_request.rb +234 -0
- data/lib/vidispine/api/client/requests/collection_access_add.rb +30 -0
- data/lib/vidispine/api/client/requests/collection_access_delete.rb +26 -0
- data/lib/vidispine/api/client/requests/collection_metadata_set.rb +24 -0
- data/lib/vidispine/api/client/requests/import_placeholder.rb +36 -0
- data/lib/vidispine/api/client/requests/import_placeholder_item.rb +38 -0
- data/lib/vidispine/api/client/requests/import_sidecar_file.rb +28 -0
- data/lib/vidispine/api/client/requests/import_using_uri.rb +44 -0
- data/lib/vidispine/api/client/requests/item_access_add.rb +30 -0
- data/lib/vidispine/api/client/requests/item_access_delete.rb +26 -0
- data/lib/vidispine/api/client/requests/item_delete.rb +17 -0
- data/lib/vidispine/api/client/requests/item_export.rb +44 -0
- data/lib/vidispine/api/client/requests/item_metadata_get.rb +37 -0
- data/lib/vidispine/api/client/requests/item_metadata_set.rb +29 -0
- data/lib/vidispine/api/client/requests/item_search.rb +0 -0
- data/lib/vidispine/api/client/requests/item_transcode.rb +23 -0
- data/lib/vidispine/api/client/requests/items_search.rb +40 -0
- data/lib/vidispine/api/client/requests/search.rb +59 -0
- data/lib/vidispine/api/client/requests/storage_file_create.rb +23 -0
- data/lib/vidispine/api/client/requests/storage_file_get.rb +40 -0
- data/lib/vidispine/api/client/requests/storage_files_get.rb +42 -0
- data/lib/vidispine/api/utilities.rb +1608 -0
- data/lib/vidispine/api/utilities/cli.rb +168 -0
- data/lib/vidispine/api/utilities/http_server.rb +230 -0
- data/lib/vidispine/api/utilities/http_server/cli.rb +77 -0
- data/lib/vidispine/cli.rb +174 -0
- data/lib/vidispine/version.rb +3 -0
- data/resources/postman/Vidispine API (From WADL v4.11).postman_collection.json +47437 -0
- data/vidispine.gemspec +26 -0
- metadata +117 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#add-a-new-entry-access-control-entry
|
4
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#add-access-control-entries-to-all-items
|
5
|
+
class CollectionAccessAdd < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :post
|
8
|
+
HTTP_PATH = '/collection/#{path_arguments[:collection_id] ? "#{path_arguments[:collection_id]}/" : ""}access'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :collection_id, :send_in => :path },
|
12
|
+
{ :name => :access_control_document, :required => true, :send_in => :body },
|
13
|
+
{ :name => :allow_all_collections, :aliases => [ :all_collections ], :send_in => :none }
|
14
|
+
]
|
15
|
+
|
16
|
+
def after_process_parameters
|
17
|
+
_collection_id = arguments[:collection_id]
|
18
|
+
unless (arguments[:allow_all_collections] == true) || (_collection_id && !_collection_id.empty?)
|
19
|
+
raise ArgumentError, 'Collection ID is required unless :allow_all_collections parameter is set to true.'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def body
|
24
|
+
body_arguments[:access_control_document]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#delete--collection-(collection-id)-access-(access-id)
|
4
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#remove-all-access-control-entries-from-all-collections
|
5
|
+
class CollectionAccessDelete < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :delete
|
8
|
+
HTTP_PATH = '/collection/#{path_arguments[:collection_id] ? "#{path_arguments[:collection_id]}/" : ""}access/#{path_arguments[:access_id]}'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :collection_id, :send_in => :path },
|
12
|
+
{ :name => :access_id, :send_in => :path, :required => true },
|
13
|
+
{ :name => :allow_all_collections, :aliases => [ :all_collections ], :send_in => :none }
|
14
|
+
]
|
15
|
+
|
16
|
+
def after_process_parameters
|
17
|
+
_collection_id = arguments[:collection_id]
|
18
|
+
unless (arguments[:allow_all_collections] == true) || (_collection_id && !_collection_id.empty?)
|
19
|
+
raise ArgumentError, 'Collection ID is required unless :allow_all_collections parameter is set to true.'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
|
4
|
+
# @see http://apidoc.vidispine.com/4.2/ref/collection.html#update-collection-metadata
|
5
|
+
class CollectionMetadataSet < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :put
|
8
|
+
HTTP_PATH = 'collection/#{path_arguments[:collection_id]}/metadata'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :collection_id, :aliases => [ :id ], :required => true, :send_in => :path },
|
12
|
+
|
13
|
+
{ :name => :MetadataDocument, :aliases => [ :body ], :send_in => :body, :default_value => { } }
|
14
|
+
]
|
15
|
+
|
16
|
+
def body
|
17
|
+
@body ||= body_arguments[:MetadataDocument]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
end
|
24
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
class ImportPlaceholder < BaseRequest
|
4
|
+
|
5
|
+
HTTP_METHOD = :post
|
6
|
+
HTTP_PATH = '/import/placeholder'
|
7
|
+
|
8
|
+
PARAMETERS = [
|
9
|
+
{ :name => :container },
|
10
|
+
{ :name => :audio },
|
11
|
+
{ :name => :video },
|
12
|
+
:type,
|
13
|
+
:frameDuration,
|
14
|
+
:notification,
|
15
|
+
:notificationData,
|
16
|
+
:priority,
|
17
|
+
:jobmetadata,
|
18
|
+
'no-transcode',
|
19
|
+
{ :name => :MetadataDocument, :aliases => [ :metadata ], :default_value => { }, :send_in => :body },
|
20
|
+
]
|
21
|
+
|
22
|
+
def body
|
23
|
+
@body ||= arguments[:MetadataDocument]
|
24
|
+
end
|
25
|
+
|
26
|
+
def body_as_xml
|
27
|
+
<<-XML
|
28
|
+
<MetadataDocument xmlns="http://xml.vidispine.com/schema/vidispine">
|
29
|
+
</MetadataDocument>
|
30
|
+
XML
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/item/import.html#import-to-a-placeholder-item
|
4
|
+
class ImportPlaceholderItem < BaseRequest
|
5
|
+
|
6
|
+
HTTP_METHOD = :post
|
7
|
+
HTTP_PATH = '/import/placeholder/#{path_arguments[:item_id]}/#{path_arguments[:item_type]}'
|
8
|
+
|
9
|
+
PARAMETERS = [
|
10
|
+
{ :name => :item_id, :required => true, :send_in => :path },
|
11
|
+
{ :name => :item_type, :required => true, :send_in => :path },
|
12
|
+
:uri,
|
13
|
+
:fileId,
|
14
|
+
:tag,
|
15
|
+
:original,
|
16
|
+
:createThumbnails,
|
17
|
+
:overrideFastStart,
|
18
|
+
:requireFastStart,
|
19
|
+
:fastStartLength,
|
20
|
+
:growing,
|
21
|
+
:notification,
|
22
|
+
:notificationDta,
|
23
|
+
:priority,
|
24
|
+
:jobmetadata,
|
25
|
+
:settings,
|
26
|
+
:index
|
27
|
+
]
|
28
|
+
|
29
|
+
def after_process_parameters
|
30
|
+
# URI Needs to be escaped twice, so we do it once here and then again when the query is built
|
31
|
+
_uri = arguments[:uri]
|
32
|
+
arguments[:uri] = CGI.escape(_uri) if _uri
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/item/import.html#import-a-sidecar-file
|
4
|
+
# @see http://vidispine.com/partner/vidiwiki/RestItemImport#Syntax:_Starting_a_sidecar_import_job
|
5
|
+
class ImportSidecarFile < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :post
|
8
|
+
HTTP_PATH = '/import/sidecar/#{path_arguments[:item_id]}'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :item_id, :required => true, :send_in => :path },
|
12
|
+
:sidecar,
|
13
|
+
:notification,
|
14
|
+
:notificationDta,
|
15
|
+
:priority,
|
16
|
+
:jobmetadata,
|
17
|
+
]
|
18
|
+
|
19
|
+
def after_process_parameters
|
20
|
+
# URI Needs to be escaped twice, so we do it once here and then again when the query is built
|
21
|
+
sidecar = arguments[:sidecar]
|
22
|
+
arguments[:sidecar] = CGI.escape(sidecar) if sidecar and sidecar.start_with?('file://')
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/4.2/ref/item/import.html#import-using-a-uri
|
4
|
+
class ImportUsingURI < BaseRequest
|
5
|
+
|
6
|
+
HTTP_METHOD = :post
|
7
|
+
HTTP_PATH = '/import'
|
8
|
+
|
9
|
+
PARAMETERS = [
|
10
|
+
{ :name => :uri, :aliases => [ :url ], :required => true },
|
11
|
+
:tag,
|
12
|
+
:original,
|
13
|
+
:thumbnails,
|
14
|
+
:thumbnailService,
|
15
|
+
:createPosers,
|
16
|
+
:overrideFastStart,
|
17
|
+
:requireFastStart,
|
18
|
+
:fastStartLength,
|
19
|
+
:storageId,
|
20
|
+
:filename,
|
21
|
+
:growing,
|
22
|
+
:xmpfile,
|
23
|
+
:sidecar,
|
24
|
+
'no-transcode',
|
25
|
+
:notification,
|
26
|
+
:notificationData,
|
27
|
+
:priority,
|
28
|
+
:jobmetadata,
|
29
|
+
{ :name => :MetadataDocument, :aliases => [ :metadata ], :default_value => { }, :send_in => :body },
|
30
|
+
]
|
31
|
+
|
32
|
+
# def after_process_parameters
|
33
|
+
# # URI Needs to be escaped twice, so we do it once here and then again when the query is built
|
34
|
+
# _uri = arguments[:uri]
|
35
|
+
# arguments[:uri] = CGI.escape(_uri) if _uri
|
36
|
+
# end
|
37
|
+
|
38
|
+
def body
|
39
|
+
@body ||= arguments[:MetadataDocument]
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#add-a-new-entry-access-control-entry
|
4
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#add-access-control-entries-to-all-items
|
5
|
+
class ItemAccessAdd < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :post
|
8
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id] ? "#{path_arguments[:item_id]}/" : ""}access'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :item_id, :send_in => :path },
|
12
|
+
{ :name => :access_control_document, :required => true, :send_in => :body },
|
13
|
+
{ :name => :allow_all_items, :aliases => [ :all_items ], :send_in => :none }
|
14
|
+
]
|
15
|
+
|
16
|
+
def after_process_parameters
|
17
|
+
_item_id = arguments[:item_id]
|
18
|
+
unless (arguments[:allow_all_items] == true) || (_item_id && !_item_id.empty?)
|
19
|
+
raise ArgumentError, 'Item ID is required unless :allow_all_items parameter is set to true.'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def body
|
24
|
+
body_arguments[:access_control_document]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#delete--item-(item-id)-access-(access-id)
|
4
|
+
# @see http://apidoc.vidispine.com/latest/ref/access-control.html#remove-all-access-control-entries-from-all-items
|
5
|
+
class ItemAccessDelete < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :delete
|
8
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id] ? "#{path_arguments[:item_id]}/" : ""}access/#{path_arguments[:access_id]}'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :item_id, :send_in => :path },
|
12
|
+
{ :name => :access_id, :send_in => :path, :required => true },
|
13
|
+
{ :name => :allow_all_items, :aliases => [ :all_items ], :send_in => :none }
|
14
|
+
]
|
15
|
+
|
16
|
+
def after_process_parameters
|
17
|
+
_item_id = arguments[:item_id]
|
18
|
+
unless (arguments[:allow_all_items] == true) || (_item_id && !_item_id.empty?)
|
19
|
+
raise ArgumentError, 'Item ID is required unless :allow_all_items parameter is set to true.'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
class ItemDelete < BaseRequest
|
4
|
+
|
5
|
+
HTTP_METHOD = :delete
|
6
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id]}'
|
7
|
+
|
8
|
+
PARAMETERS = [
|
9
|
+
{ :name => :item_id, :aliases => [ :id ], :required => true, :send_in => :path },
|
10
|
+
:keepShapeTagMedia,
|
11
|
+
:keepShapeTagStorage,
|
12
|
+
]
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
# @see http://apidoc.vidispine.com/latest/ref/item/export.html#item-export
|
4
|
+
class ItemExport < BaseRequest
|
5
|
+
|
6
|
+
HTTP_METHOD = :post
|
7
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id]}/export'
|
8
|
+
DEFAULT_PARAMETER_SEND_IN_VALUE = :query
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :item_id, :send_in => :path },
|
12
|
+
|
13
|
+
:uri,
|
14
|
+
:locationName,
|
15
|
+
:tag,
|
16
|
+
:metadata,
|
17
|
+
:projection,
|
18
|
+
:start,
|
19
|
+
:end,
|
20
|
+
:notification,
|
21
|
+
:notificationData,
|
22
|
+
:priority,
|
23
|
+
:jobmetadata,
|
24
|
+
:useOriginalFilename,
|
25
|
+
:template,
|
26
|
+
:allowMissing,
|
27
|
+
|
28
|
+
{ :name => :body, :send_in => :body }
|
29
|
+
]
|
30
|
+
|
31
|
+
def body
|
32
|
+
@body ||= arguments[:body]
|
33
|
+
end
|
34
|
+
|
35
|
+
def body_as_xml
|
36
|
+
<<-XML
|
37
|
+
<empty/>
|
38
|
+
XML
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
|
4
|
+
# @see http://apidoc.vidispine.com/4.2/ref/metadata/metadata.html#get--item-(id)-metadata
|
5
|
+
class ItemMetadataGet < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :get
|
8
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id]}/metadata'
|
9
|
+
|
10
|
+
DEFAULT_PARAMETER_SEND_IN_VALUE = :matrix
|
11
|
+
|
12
|
+
PARAMETERS = [
|
13
|
+
{ :name => :item_id, :aliases => [ :id ], :required => true, :send_in => :path },
|
14
|
+
|
15
|
+
:projection,
|
16
|
+
:interval,
|
17
|
+
:startc,
|
18
|
+
:field,
|
19
|
+
:group,
|
20
|
+
:track,
|
21
|
+
:language,
|
22
|
+
:conflict,
|
23
|
+
:samplerate,
|
24
|
+
:revision,
|
25
|
+
:terse,
|
26
|
+
:include,
|
27
|
+
:defaultValue,
|
28
|
+
:from,
|
29
|
+
:to,
|
30
|
+
|
31
|
+
{ :name => :includeTransientMetadata, :send_in => :query },
|
32
|
+
]
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
|
4
|
+
# @see http://apidoc.vidispine.com/4.2/ref/metadata/metadata.html#set--item-(id)-metadata
|
5
|
+
class ItemMetadataSet < BaseRequest
|
6
|
+
|
7
|
+
HTTP_METHOD = :put
|
8
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id]}/metadata'
|
9
|
+
|
10
|
+
PARAMETERS = [
|
11
|
+
{ :name => :item_id, :aliases => [ :id ], :required => true, :send_in => :path },
|
12
|
+
|
13
|
+
{ :name => :projection, :send_in => :matrix },
|
14
|
+
{ :name => 'output-project', :send_in => :matrix },
|
15
|
+
|
16
|
+
:revision,
|
17
|
+
|
18
|
+
{ :name => :MetadataDocument, :send_in => :body, :default_value => { } }
|
19
|
+
]
|
20
|
+
|
21
|
+
def body
|
22
|
+
@body ||= body_arguments[:MetadataDocument]
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
end
|
29
|
+
|
File without changes
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Vidispine::API::Client::Requests
|
2
|
+
|
3
|
+
class ItemTranscode < BaseRequest
|
4
|
+
|
5
|
+
HTTP_METHOD = :post
|
6
|
+
HTTP_PATH = '/item/#{path_arguments[:item_id]}/transcode'
|
7
|
+
|
8
|
+
PARAMETERS = [
|
9
|
+
{ :name => :item_id, :aliases => [ :id ], :send_in => :path, :required => true },
|
10
|
+
|
11
|
+
{ :name => :tag, :required => true },
|
12
|
+
:createThumbnails,
|
13
|
+
:createPosters,
|
14
|
+
:notification,
|
15
|
+
:notificationData,
|
16
|
+
:priority,
|
17
|
+
:jobmetadata
|
18
|
+
]
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|