kaltura-client 1.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 +7 -0
- data/README +21 -0
- data/Rakefile +19 -0
- data/agpl.txt +674 -0
- data/kaltura.yml +7 -0
- data/lib/kaltura.rb +31 -0
- data/lib/kaltura_client.rb +15649 -0
- data/lib/kaltura_client_base.rb +432 -0
- data/lib/kaltura_plugins/kaltura_abc_screeners_watermark_access_control_client_plugin.rb +37 -0
- data/lib/kaltura_plugins/kaltura_ad_cue_point_client_plugin.rb +110 -0
- data/lib/kaltura_plugins/kaltura_annotation_client_plugin.rb +239 -0
- data/lib/kaltura_plugins/kaltura_aspera_client_plugin.rb +61 -0
- data/lib/kaltura_plugins/kaltura_attachment_client_plugin.rb +227 -0
- data/lib/kaltura_plugins/kaltura_audit_client_plugin.rb +349 -0
- data/lib/kaltura_plugins/kaltura_bulk_upload_client_plugin.rb +116 -0
- data/lib/kaltura_plugins/kaltura_bulk_upload_csv_client_plugin.rb +55 -0
- data/lib/kaltura_plugins/kaltura_bulk_upload_filter_client_plugin.rb +58 -0
- data/lib/kaltura_plugins/kaltura_bulk_upload_xml_client_plugin.rb +40 -0
- data/lib/kaltura_plugins/kaltura_caption_client_plugin.rb +406 -0
- data/lib/kaltura_plugins/kaltura_caption_search_client_plugin.rb +138 -0
- data/lib/kaltura_plugins/kaltura_code_cue_point_client_plugin.rb +99 -0
- data/lib/kaltura_plugins/kaltura_content_distribution_client_plugin.rb +1725 -0
- data/lib/kaltura_plugins/kaltura_cue_point_client_plugin.rb +312 -0
- data/lib/kaltura_plugins/kaltura_document_client_plugin.rb +522 -0
- data/lib/kaltura_plugins/kaltura_drm_client_plugin.rb +401 -0
- data/lib/kaltura_plugins/kaltura_drop_folder_client_plugin.rb +827 -0
- data/lib/kaltura_plugins/kaltura_drop_folder_xml_bulk_upload_client_plugin.rb +39 -0
- data/lib/kaltura_plugins/kaltura_email_notification_client_plugin.rb +273 -0
- data/lib/kaltura_plugins/kaltura_event_cue_point_client_plugin.rb +67 -0
- data/lib/kaltura_plugins/kaltura_event_notification_client_plugin.rb +415 -0
- data/lib/kaltura_plugins/kaltura_external_media_client_plugin.rb +203 -0
- data/lib/kaltura_plugins/kaltura_file_sync_client_plugin.rb +157 -0
- data/lib/kaltura_plugins/kaltura_http_notification_client_plugin.rb +309 -0
- data/lib/kaltura_plugins/kaltura_kontiki_client_plugin.rb +72 -0
- data/lib/kaltura_plugins/kaltura_like_client_plugin.rb +82 -0
- data/lib/kaltura_plugins/kaltura_metadata_client_plugin.rb +785 -0
- data/lib/kaltura_plugins/kaltura_multi_centers_client_plugin.rb +45 -0
- data/lib/kaltura_plugins/kaltura_play_ready_client_plugin.rb +347 -0
- data/lib/kaltura_plugins/kaltura_scheduled_task_client_plugin.rb +347 -0
- data/lib/kaltura_plugins/kaltura_scheduled_task_event_notification_client_plugin.rb +45 -0
- data/lib/kaltura_plugins/kaltura_scheduled_task_metadata_client_plugin.rb +51 -0
- data/lib/kaltura_plugins/kaltura_short_link_client_plugin.rb +231 -0
- data/lib/kaltura_plugins/kaltura_tag_search_client_plugin.rb +145 -0
- data/lib/kaltura_plugins/kaltura_thumb_cue_point_client_plugin.rb +105 -0
- data/lib/kaltura_plugins/kaltura_var_console_client_plugin.rb +238 -0
- data/lib/kaltura_plugins/kaltura_velocix_client_plugin.rb +40 -0
- data/lib/kaltura_plugins/kaltura_virus_scan_client_plugin.rb +263 -0
- data/lib/kaltura_plugins/kaltura_webex_drop_folder_client_plugin.rb +111 -0
- data/lib/kaltura_plugins/kaltura_widevine_client_plugin.rb +195 -0
- data/test/access_control_service_test.rb +75 -0
- data/test/base_entry_service_test.rb +267 -0
- data/test/configuration_test.rb +178 -0
- data/test/cue_point_service_test.rb +67 -0
- data/test/data_service_test.rb +76 -0
- data/test/document_service_test.rb +41 -0
- data/test/media/test.mov +0 -0
- data/test/media/test.pdf +0 -0
- data/test/media/test.png +0 -0
- data/test/media/test.swf +0 -0
- data/test/media/test.wmv +0 -0
- data/test/media_service_test.rb +294 -0
- data/test/metadata_profile_service_test.rb +63 -0
- data/test/test_helper.rb +59 -0
- metadata +132 -0
@@ -0,0 +1,111 @@
|
|
1
|
+
# ===================================================================================================
|
2
|
+
# _ __ _ _
|
3
|
+
# | |/ /__ _| | |_ _ _ _ _ __ _
|
4
|
+
# | ' </ _` | | _| || | '_/ _` |
|
5
|
+
# |_|\_\__,_|_|\__|\_,_|_| \__,_|
|
6
|
+
#
|
7
|
+
# This file is part of the Kaltura Collaborative Media Suite which allows users
|
8
|
+
# to do with audio, video, and animation what Wiki platfroms allow them to do with
|
9
|
+
# text.
|
10
|
+
#
|
11
|
+
# Copyright (C) 2006-2011 Kaltura Inc.
|
12
|
+
#
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
14
|
+
# it under the terms of the GNU Affero General Public License as
|
15
|
+
# published by the Free Software Foundation, either version 3 of the
|
16
|
+
# License, or (at your option) any later version.
|
17
|
+
#
|
18
|
+
# This program is distributed in the hope that it will be useful,
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
21
|
+
# GNU Affero General Public License for more details.
|
22
|
+
#
|
23
|
+
# You should have received a copy of the GNU Affero General Public License
|
24
|
+
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
25
|
+
#
|
26
|
+
# @ignore
|
27
|
+
# ===================================================================================================
|
28
|
+
require 'kaltura_client.rb'
|
29
|
+
require File.dirname(__FILE__) + '/kaltura_drop_folder_client_plugin.rb'
|
30
|
+
|
31
|
+
module Kaltura
|
32
|
+
|
33
|
+
class KalturaWebexDropFolderFileOrderBy
|
34
|
+
CREATED_AT_ASC = "+createdAt"
|
35
|
+
FILE_NAME_ASC = "+fileName"
|
36
|
+
FILE_SIZE_ASC = "+fileSize"
|
37
|
+
FILE_SIZE_LAST_SET_AT_ASC = "+fileSizeLastSetAt"
|
38
|
+
ID_ASC = "+id"
|
39
|
+
PARSED_FLAVOR_ASC = "+parsedFlavor"
|
40
|
+
PARSED_SLUG_ASC = "+parsedSlug"
|
41
|
+
UPDATED_AT_ASC = "+updatedAt"
|
42
|
+
CREATED_AT_DESC = "-createdAt"
|
43
|
+
FILE_NAME_DESC = "-fileName"
|
44
|
+
FILE_SIZE_DESC = "-fileSize"
|
45
|
+
FILE_SIZE_LAST_SET_AT_DESC = "-fileSizeLastSetAt"
|
46
|
+
ID_DESC = "-id"
|
47
|
+
PARSED_FLAVOR_DESC = "-parsedFlavor"
|
48
|
+
PARSED_SLUG_DESC = "-parsedSlug"
|
49
|
+
UPDATED_AT_DESC = "-updatedAt"
|
50
|
+
end
|
51
|
+
|
52
|
+
class KalturaWebexDropFolderOrderBy
|
53
|
+
CREATED_AT_ASC = "+createdAt"
|
54
|
+
ID_ASC = "+id"
|
55
|
+
NAME_ASC = "+name"
|
56
|
+
UPDATED_AT_ASC = "+updatedAt"
|
57
|
+
CREATED_AT_DESC = "-createdAt"
|
58
|
+
ID_DESC = "-id"
|
59
|
+
NAME_DESC = "-name"
|
60
|
+
UPDATED_AT_DESC = "-updatedAt"
|
61
|
+
end
|
62
|
+
|
63
|
+
class KalturaWebexDropFolder < KalturaDropFolder
|
64
|
+
attr_accessor :webex_user_id
|
65
|
+
attr_accessor :webex_password
|
66
|
+
attr_accessor :webex_site_id
|
67
|
+
attr_accessor :webex_partner_id
|
68
|
+
attr_accessor :webex_service_url
|
69
|
+
attr_accessor :webex_host_id_metadata_field_name
|
70
|
+
|
71
|
+
def webex_site_id=(val)
|
72
|
+
@webex_site_id = val.to_i
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
class KalturaWebexDropFolderFile < KalturaDropFolderFile
|
77
|
+
attr_accessor :recording_id
|
78
|
+
attr_accessor :webex_host_id
|
79
|
+
attr_accessor :description
|
80
|
+
attr_accessor :conf_id
|
81
|
+
attr_accessor :content_url
|
82
|
+
|
83
|
+
def recording_id=(val)
|
84
|
+
@recording_id = val.to_i
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class KalturaWebexDropFolderContentProcessorJobData < KalturaDropFolderContentProcessorJobData
|
89
|
+
attr_accessor :description
|
90
|
+
attr_accessor :webex_host_id
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
class KalturaWebexDropFolderBaseFilter < KalturaDropFolderFilter
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
class KalturaWebexDropFolderFileBaseFilter < KalturaDropFolderFileFilter
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
class KalturaWebexDropFolderFileFilter < KalturaWebexDropFolderFileBaseFilter
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
class KalturaWebexDropFolderFilter < KalturaWebexDropFolderBaseFilter
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
# ===================================================================================================
|
2
|
+
# _ __ _ _
|
3
|
+
# | |/ /__ _| | |_ _ _ _ _ __ _
|
4
|
+
# | ' </ _` | | _| || | '_/ _` |
|
5
|
+
# |_|\_\__,_|_|\__|\_,_|_| \__,_|
|
6
|
+
#
|
7
|
+
# This file is part of the Kaltura Collaborative Media Suite which allows users
|
8
|
+
# to do with audio, video, and animation what Wiki platfroms allow them to do with
|
9
|
+
# text.
|
10
|
+
#
|
11
|
+
# Copyright (C) 2006-2011 Kaltura Inc.
|
12
|
+
#
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
14
|
+
# it under the terms of the GNU Affero General Public License as
|
15
|
+
# published by the Free Software Foundation, either version 3 of the
|
16
|
+
# License, or (at your option) any later version.
|
17
|
+
#
|
18
|
+
# This program is distributed in the hope that it will be useful,
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
21
|
+
# GNU Affero General Public License for more details.
|
22
|
+
#
|
23
|
+
# You should have received a copy of the GNU Affero General Public License
|
24
|
+
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
25
|
+
#
|
26
|
+
# @ignore
|
27
|
+
# ===================================================================================================
|
28
|
+
require 'kaltura_client.rb'
|
29
|
+
require File.dirname(__FILE__) + '/kaltura_drm_client_plugin.rb'
|
30
|
+
|
31
|
+
module Kaltura
|
32
|
+
|
33
|
+
class KalturaWidevineRepositorySyncMode
|
34
|
+
MODIFY = 0
|
35
|
+
end
|
36
|
+
|
37
|
+
class KalturaWidevineFlavorAssetOrderBy
|
38
|
+
CREATED_AT_ASC = "+createdAt"
|
39
|
+
DELETED_AT_ASC = "+deletedAt"
|
40
|
+
SIZE_ASC = "+size"
|
41
|
+
UPDATED_AT_ASC = "+updatedAt"
|
42
|
+
CREATED_AT_DESC = "-createdAt"
|
43
|
+
DELETED_AT_DESC = "-deletedAt"
|
44
|
+
SIZE_DESC = "-size"
|
45
|
+
UPDATED_AT_DESC = "-updatedAt"
|
46
|
+
end
|
47
|
+
|
48
|
+
class KalturaWidevineFlavorParamsOrderBy
|
49
|
+
end
|
50
|
+
|
51
|
+
class KalturaWidevineFlavorParamsOutputOrderBy
|
52
|
+
end
|
53
|
+
|
54
|
+
class KalturaWidevineProfileOrderBy
|
55
|
+
ID_ASC = "+id"
|
56
|
+
NAME_ASC = "+name"
|
57
|
+
ID_DESC = "-id"
|
58
|
+
NAME_DESC = "-name"
|
59
|
+
end
|
60
|
+
|
61
|
+
class KalturaWidevineProfile < KalturaDrmProfile
|
62
|
+
attr_accessor :key
|
63
|
+
attr_accessor :iv
|
64
|
+
attr_accessor :owner
|
65
|
+
attr_accessor :portal
|
66
|
+
attr_accessor :max_gop
|
67
|
+
attr_accessor :reg_server_host
|
68
|
+
|
69
|
+
def max_gop=(val)
|
70
|
+
@max_gop = val.to_i
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
class KalturaWidevineRepositorySyncJobData < KalturaJobData
|
75
|
+
attr_accessor :sync_mode
|
76
|
+
attr_accessor :wv_asset_ids
|
77
|
+
attr_accessor :modified_attributes
|
78
|
+
attr_accessor :monitor_sync_completion
|
79
|
+
|
80
|
+
def sync_mode=(val)
|
81
|
+
@sync_mode = val.to_i
|
82
|
+
end
|
83
|
+
def monitor_sync_completion=(val)
|
84
|
+
@monitor_sync_completion = val.to_i
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
class KalturaWidevineFlavorAsset < KalturaFlavorAsset
|
89
|
+
# License distribution window start date
|
90
|
+
#
|
91
|
+
attr_accessor :widevine_distribution_start_date
|
92
|
+
# License distribution window end date
|
93
|
+
#
|
94
|
+
attr_accessor :widevine_distribution_end_date
|
95
|
+
# Widevine unique asset id
|
96
|
+
#
|
97
|
+
attr_accessor :widevine_asset_id
|
98
|
+
|
99
|
+
def widevine_distribution_start_date=(val)
|
100
|
+
@widevine_distribution_start_date = val.to_i
|
101
|
+
end
|
102
|
+
def widevine_distribution_end_date=(val)
|
103
|
+
@widevine_distribution_end_date = val.to_i
|
104
|
+
end
|
105
|
+
def widevine_asset_id=(val)
|
106
|
+
@widevine_asset_id = val.to_i
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
class KalturaWidevineFlavorParams < KalturaFlavorParams
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
class KalturaWidevineFlavorParamsOutput < KalturaFlavorParamsOutput
|
115
|
+
# License distribution window start date
|
116
|
+
#
|
117
|
+
attr_accessor :widevine_distribution_start_date
|
118
|
+
# License distribution window end date
|
119
|
+
#
|
120
|
+
attr_accessor :widevine_distribution_end_date
|
121
|
+
|
122
|
+
def widevine_distribution_start_date=(val)
|
123
|
+
@widevine_distribution_start_date = val.to_i
|
124
|
+
end
|
125
|
+
def widevine_distribution_end_date=(val)
|
126
|
+
@widevine_distribution_end_date = val.to_i
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
class KalturaWidevineProfileBaseFilter < KalturaDrmProfileFilter
|
131
|
+
|
132
|
+
end
|
133
|
+
|
134
|
+
class KalturaWidevineProfileFilter < KalturaWidevineProfileBaseFilter
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
class KalturaWidevineFlavorAssetBaseFilter < KalturaFlavorAssetFilter
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
class KalturaWidevineFlavorParamsBaseFilter < KalturaFlavorParamsFilter
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
class KalturaWidevineFlavorAssetFilter < KalturaWidevineFlavorAssetBaseFilter
|
147
|
+
|
148
|
+
end
|
149
|
+
|
150
|
+
class KalturaWidevineFlavorParamsFilter < KalturaWidevineFlavorParamsBaseFilter
|
151
|
+
|
152
|
+
end
|
153
|
+
|
154
|
+
class KalturaWidevineFlavorParamsOutputBaseFilter < KalturaFlavorParamsOutputFilter
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
class KalturaWidevineFlavorParamsOutputFilter < KalturaWidevineFlavorParamsOutputBaseFilter
|
159
|
+
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
# WidevineDrmService serves as a license proxy to a Widevine license server
|
164
|
+
#
|
165
|
+
class KalturaWidevineDrmService < KalturaServiceBase
|
166
|
+
def initialize(client)
|
167
|
+
super(client)
|
168
|
+
end
|
169
|
+
|
170
|
+
# Get license for encrypted content playback
|
171
|
+
#
|
172
|
+
def get_license(flavor_asset_id, referrer=KalturaNotImplemented)
|
173
|
+
kparams = {}
|
174
|
+
client.add_param(kparams, 'flavorAssetId', flavor_asset_id);
|
175
|
+
# 64base encoded
|
176
|
+
client.add_param(kparams, 'referrer', referrer);
|
177
|
+
client.queue_service_action_call('widevine_widevinedrm', 'getLicense', kparams);
|
178
|
+
if (client.is_multirequest)
|
179
|
+
return nil;
|
180
|
+
end
|
181
|
+
return client.do_queue();
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
class KalturaClient < KalturaClientBase
|
186
|
+
attr_reader :widevine_drm_service
|
187
|
+
def widevine_drm_service
|
188
|
+
if (@widevine_drm_service == nil)
|
189
|
+
@widevine_drm_service = KalturaWidevineDrmService.new(self)
|
190
|
+
end
|
191
|
+
return @widevine_drm_service
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# ===================================================================================================
|
2
|
+
# _ __ _ _
|
3
|
+
# | |/ /__ _| | |_ _ _ _ _ __ _
|
4
|
+
# | ' </ _` | | _| || | '_/ _` |
|
5
|
+
# |_|\_\__,_|_|\__|\_,_|_| \__,_|
|
6
|
+
#
|
7
|
+
# This file is part of the Kaltura Collaborative Media Suite which allows users
|
8
|
+
# to do with audio, video, and animation what Wiki platfroms allow them to do with
|
9
|
+
# text.
|
10
|
+
#
|
11
|
+
# Copyright (C) 2006-2011 Kaltura Inc.
|
12
|
+
#
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
14
|
+
# it under the terms of the GNU Affero General Public License as
|
15
|
+
# published by the Free Software Foundation, either version 3 of the
|
16
|
+
# License, or (at your option) any later version.
|
17
|
+
#
|
18
|
+
# This program is distributed in the hope that it will be useful,
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
21
|
+
# GNU Affero General Public License for more details.
|
22
|
+
#
|
23
|
+
# You should have received a copy of the GNU Affero General Public License
|
24
|
+
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
25
|
+
#
|
26
|
+
# @ignore
|
27
|
+
# ===================================================================================================
|
28
|
+
require 'test_helper'
|
29
|
+
require 'uri'
|
30
|
+
|
31
|
+
class AccessControlServiceTest < Test::Unit::TestCase
|
32
|
+
|
33
|
+
# this test create a access control object and reset the restrictions using and empty array.
|
34
|
+
should "be able to send empty array to the api and reset the values" do
|
35
|
+
|
36
|
+
# cleaning up the list
|
37
|
+
access_control_filter = Kaltura::KalturaAccessControlFilter.new
|
38
|
+
filter_pager = Kaltura::KalturaFilterPager.new
|
39
|
+
access_control_list = @client.access_control_service.list(access_control_filter, filter_pager)
|
40
|
+
access_control_list.objects.each do |obj|
|
41
|
+
@client.access_control_service.delete(obj.id) rescue nil
|
42
|
+
end if access_control_list.objects
|
43
|
+
|
44
|
+
access_control = Kaltura::KalturaAccessControl.new
|
45
|
+
access_control.name = "kaltura_test"
|
46
|
+
access_control.is_default = Kaltura::KalturaNullableBoolean::FALSE_VALUE
|
47
|
+
|
48
|
+
access_control.restrictions = []
|
49
|
+
|
50
|
+
restriction1 = Kaltura::KalturaCountryRestriction.new
|
51
|
+
restriction1.country_restriction_type = Kaltura::KalturaCountryRestrictionType::RESTRICT_COUNTRY_LIST
|
52
|
+
restriction1.country_list = 'UK,LK'
|
53
|
+
access_control.restrictions << restriction1
|
54
|
+
|
55
|
+
restriction2 = Kaltura::KalturaSiteRestriction.new
|
56
|
+
restriction2.site_restriction_type = Kaltura::KalturaSiteRestrictionType::RESTRICT_SITE_LIST
|
57
|
+
restriction2.site_list = 'http://www.kaltura.com'
|
58
|
+
access_control.restrictions << restriction2
|
59
|
+
|
60
|
+
created_access_control = @client.access_control_service.add(access_control)
|
61
|
+
|
62
|
+
assert_not_nil created_access_control.id
|
63
|
+
assert_equal created_access_control.restrictions.size, 2
|
64
|
+
|
65
|
+
# edited access control
|
66
|
+
edited_access_control = Kaltura::KalturaAccessControl.new
|
67
|
+
edited_access_control.name = access_control.name
|
68
|
+
edited_access_control.restrictions = []
|
69
|
+
|
70
|
+
updated_access_control = @client.access_control_service.update(created_access_control.id, edited_access_control)
|
71
|
+
|
72
|
+
assert_equal updated_access_control.restrictions, nil
|
73
|
+
assert_nil @client.access_control_service.delete(updated_access_control.id)
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,267 @@
|
|
1
|
+
# ===================================================================================================
|
2
|
+
# _ __ _ _
|
3
|
+
# | |/ /__ _| | |_ _ _ _ _ __ _
|
4
|
+
# | ' </ _` | | _| || | '_/ _` |
|
5
|
+
# |_|\_\__,_|_|\__|\_,_|_| \__,_|
|
6
|
+
#
|
7
|
+
# This file is part of the Kaltura Collaborative Media Suite which allows users
|
8
|
+
# to do with audio, video, and animation what Wiki platfroms allow them to do with
|
9
|
+
# text.
|
10
|
+
#
|
11
|
+
# Copyright (C) 2006-2011 Kaltura Inc.
|
12
|
+
#
|
13
|
+
# This program is free software: you can redistribute it and/or modify
|
14
|
+
# it under the terms of the GNU Affero General Public License as
|
15
|
+
# published by the Free Software Foundation, either version 3 of the
|
16
|
+
# License, or (at your option) any later version.
|
17
|
+
#
|
18
|
+
# This program is distributed in the hope that it will be useful,
|
19
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
21
|
+
# GNU Affero General Public License for more details.
|
22
|
+
#
|
23
|
+
# You should have received a copy of the GNU Affero General Public License
|
24
|
+
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
|
25
|
+
#
|
26
|
+
# @ignore
|
27
|
+
# ===================================================================================================
|
28
|
+
require 'test_helper'
|
29
|
+
|
30
|
+
class BaseEntryServiceTest < Test::Unit::TestCase
|
31
|
+
|
32
|
+
# this test uploads a file to kaltura and creates an entry using the uploaded file.
|
33
|
+
should "upload a file and create an entry" do
|
34
|
+
|
35
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
36
|
+
base_entry.type = Kaltura::KalturaEntryType::DOCUMENT
|
37
|
+
base_entry.name = "kaltura_test"
|
38
|
+
pdf_file = File.open("test/media/test.pdf")
|
39
|
+
|
40
|
+
pdf_token = @client.base_entry_service.upload(pdf_file)
|
41
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
42
|
+
|
43
|
+
assert_not_nil created_entry.id
|
44
|
+
assert_nil @client.base_entry_service.delete(created_entry.id)
|
45
|
+
end
|
46
|
+
|
47
|
+
# this test uploads a file to kaltura and creates an entry using the uploaded file.
|
48
|
+
should "upload a file and create an entry" do
|
49
|
+
|
50
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
51
|
+
base_entry.type = Kaltura::KalturaEntryType::AUTOMATIC
|
52
|
+
base_entry.name = "kaltura_test"
|
53
|
+
swf_file = File.open("test/media/test.swf")
|
54
|
+
|
55
|
+
pdf_token = @client.base_entry_service.upload(swf_file)
|
56
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
57
|
+
|
58
|
+
assert_not_nil created_entry.id
|
59
|
+
assert_nil @client.base_entry_service.delete(created_entry.id)
|
60
|
+
end
|
61
|
+
|
62
|
+
# this test simulates an api response with 'not supported' attributes and try to parse and generate an entry object out of it.
|
63
|
+
should "silently ignore any fields returned from the server that it does not recognize" do
|
64
|
+
|
65
|
+
response_body =
|
66
|
+
<<-XML
|
67
|
+
<?xml version='1.0' encoding='utf-8'?><xml><result><objectType>KalturaBaseEntry</objectType><id>0_npdg4rrs</id><not_supported_attr>not_supported_attr val</not_supported_attr><name>102_1321456940</name><description></description><partnerId>102</partnerId><userId></userId><tags></tags><adminTags></adminTags><categories></categories><status>2</status><moderationStatus>6</moderationStatus><moderationCount>0</moderationCount><type>10</type><createdAt>1321456940</createdAt><rank>0</rank><totalRank>0</totalRank><votes>0</votes><groupId></groupId><partnerData></partnerData><downloadUrl>http://ec2-174-129-124-16.compute-1.amazonaws.com/p/102/sp/10200/raw/entry_id/0_npdg4rrs/version/100000</downloadUrl><searchText> 102_1321456940 </searchText><licenseType>-1</licenseType><version>100000</version><thumbnailUrl>http://ec2-174-129-124-16.compute-1.amazonaws.com/p/102/sp/10200/thumbnail/entry_id/0_npdg4rrs/version/0</thumbnailUrl><accessControlId>4</accessControlId><startDate></startDate><endDate></endDate></result><executionTime>0.110525846481</executionTime></xml>
|
68
|
+
XML
|
69
|
+
created_entry = @client.parse_to_objects(response_body)
|
70
|
+
|
71
|
+
assert_instance_of Kaltura::KalturaBaseEntry, created_entry
|
72
|
+
assert_not_nil created_entry.id
|
73
|
+
end
|
74
|
+
|
75
|
+
# this test creates an entry and retrieves the list of entries and count from kaltura by setting a filter.
|
76
|
+
should "get the base entry list" do
|
77
|
+
|
78
|
+
# cleaning up the list
|
79
|
+
base_entry_filter = Kaltura::KalturaBaseEntryFilter.new
|
80
|
+
base_entry_filter.name_multi_like_or = "kaltura_test"
|
81
|
+
filter_pager = Kaltura::KalturaFilterPager.new
|
82
|
+
base_entry_list = @client.base_entry_service.list(base_entry_filter, filter_pager)
|
83
|
+
base_entry_list.objects.each do |obj|
|
84
|
+
@client.base_entry_service.delete(obj.id) rescue nil
|
85
|
+
end if base_entry_list.objects
|
86
|
+
|
87
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
88
|
+
base_entry.type = Kaltura::KalturaEntryType::AUTOMATIC
|
89
|
+
base_entry.name = "kaltura_test"
|
90
|
+
swf_file = File.open("test/media/test.swf")
|
91
|
+
|
92
|
+
pdf_token = @client.base_entry_service.upload(swf_file)
|
93
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
94
|
+
|
95
|
+
assert_not_nil created_entry.id
|
96
|
+
|
97
|
+
base_entry_filter = Kaltura::KalturaBaseEntryFilter.new
|
98
|
+
base_entry_filter.name_multi_like_or = "kaltura_test"
|
99
|
+
filter_pager = Kaltura::KalturaFilterPager.new
|
100
|
+
base_entry_list = @client.base_entry_service.list(base_entry_filter, filter_pager)
|
101
|
+
|
102
|
+
assert_equal base_entry_list.total_count, 1
|
103
|
+
|
104
|
+
count = @client.base_entry_service.count(base_entry_filter)
|
105
|
+
|
106
|
+
assert_equal count.to_i, 1
|
107
|
+
|
108
|
+
assert_nil @client.base_entry_service.delete(created_entry.id)
|
109
|
+
end
|
110
|
+
|
111
|
+
# this test creates an entry and retrieves it back using the id.
|
112
|
+
should "get the base entry" do
|
113
|
+
|
114
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
115
|
+
base_entry.type = Kaltura::KalturaEntryType::DOCUMENT
|
116
|
+
base_entry.name = "kaltura_test"
|
117
|
+
swf_file = File.open("test/media/test.pdf")
|
118
|
+
|
119
|
+
pdf_token = @client.base_entry_service.upload(swf_file)
|
120
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
121
|
+
|
122
|
+
assert_not_nil created_entry.id
|
123
|
+
|
124
|
+
base_entry = @client.base_entry_service.get(created_entry.id)
|
125
|
+
|
126
|
+
assert_not_nil base_entry
|
127
|
+
assert_instance_of Kaltura::KalturaDocumentEntry, base_entry
|
128
|
+
assert_equal base_entry.id, created_entry.id
|
129
|
+
assert_nil @client.base_entry_service.delete(base_entry.id)
|
130
|
+
end
|
131
|
+
|
132
|
+
# this test creates couple of entries and retrieves them back using the ids
|
133
|
+
should "get the base entries using the ids" do
|
134
|
+
|
135
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
136
|
+
base_entry.type = Kaltura::KalturaEntryType::DOCUMENT
|
137
|
+
base_entry.name = "kaltura_test"
|
138
|
+
swf_file = File.open("test/media/test.pdf")
|
139
|
+
|
140
|
+
pdf_token = @client.base_entry_service.upload(swf_file)
|
141
|
+
created_entry1 = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
142
|
+
|
143
|
+
assert_not_nil created_entry1.id
|
144
|
+
|
145
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
146
|
+
base_entry.type = Kaltura::KalturaEntryType::AUTOMATIC
|
147
|
+
base_entry.name = "kaltura_test"
|
148
|
+
swf_file = File.open("test/media/test.swf")
|
149
|
+
|
150
|
+
pdf_token = @client.base_entry_service.upload(swf_file)
|
151
|
+
created_entry2 = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
152
|
+
|
153
|
+
assert_not_nil created_entry2.id
|
154
|
+
|
155
|
+
base_entry_list = @client.base_entry_service.get_by_ids("#{created_entry1.id},#{created_entry2.id}")
|
156
|
+
|
157
|
+
assert_not_nil base_entry_list
|
158
|
+
assert_instance_of Array, base_entry_list
|
159
|
+
assert_equal base_entry_list.count, 2
|
160
|
+
assert_nil @client.base_entry_service.delete(created_entry1.id)
|
161
|
+
assert_nil @client.base_entry_service.delete(created_entry2.id)
|
162
|
+
end
|
163
|
+
|
164
|
+
# this test tries toretrieve an entry with invalid id.
|
165
|
+
should "throw an error for invalid base entry id" do
|
166
|
+
|
167
|
+
assert_raise Kaltura::KalturaAPIError do
|
168
|
+
@client.base_entry_service.get("invalid_base_entry_id")
|
169
|
+
end
|
170
|
+
|
171
|
+
end
|
172
|
+
|
173
|
+
# this test creates an entry and updates the metadata of it.
|
174
|
+
should "update the base entry metadata" do
|
175
|
+
|
176
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
177
|
+
base_entry.type = Kaltura::KalturaEntryType::AUTOMATIC
|
178
|
+
base_entry.name = "kaltura test"
|
179
|
+
swf_file = File.open("test/media/test.swf")
|
180
|
+
|
181
|
+
pdf_token = @client.base_entry_service.upload(swf_file)
|
182
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
183
|
+
|
184
|
+
assert_not_nil created_entry.id
|
185
|
+
|
186
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
187
|
+
base_entry.name = "kaltura test updated"
|
188
|
+
base_entry.description = "kaltura test description"
|
189
|
+
base_entry_updated = @client.base_entry_service.update(created_entry.id, base_entry)
|
190
|
+
|
191
|
+
assert_not_nil base_entry_updated
|
192
|
+
assert_instance_of Kaltura::KalturaBaseEntry, base_entry_updated
|
193
|
+
assert_equal base_entry_updated.name, "kaltura test updated"
|
194
|
+
assert_equal base_entry_updated.description, "kaltura test description"
|
195
|
+
|
196
|
+
assert_nil @client.base_entry_service.delete(base_entry_updated.id)
|
197
|
+
end
|
198
|
+
|
199
|
+
# this test creates an entry and updates it's thumbnail.
|
200
|
+
should "upload a thumbnail for the base entry " do
|
201
|
+
|
202
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
203
|
+
base_entry.type = Kaltura::KalturaEntryType::DOCUMENT
|
204
|
+
base_entry.name = "kaltura_test"
|
205
|
+
pdf_file = File.open("test/media/test.pdf")
|
206
|
+
|
207
|
+
pdf_token = @client.base_entry_service.upload(pdf_file)
|
208
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
209
|
+
|
210
|
+
assert_not_nil created_entry.id
|
211
|
+
|
212
|
+
img_file = File.open("test/media/test.png")
|
213
|
+
|
214
|
+
updated_entry = @client.base_entry_service.update_thumbnail_jpeg(created_entry.id, img_file)
|
215
|
+
|
216
|
+
assert_not_nil updated_entry.thumbnail_url
|
217
|
+
assert_not_equal updated_entry.thumbnail_url, created_entry.thumbnail_url
|
218
|
+
assert_nil @client.base_entry_service.delete(updated_entry.id)
|
219
|
+
end
|
220
|
+
|
221
|
+
# this test creates an entry and set it's moderation flags.
|
222
|
+
should "set the moderation flags" do
|
223
|
+
|
224
|
+
base_entry = Kaltura::KalturaBaseEntry.new
|
225
|
+
base_entry.type = Kaltura::KalturaEntryType::DOCUMENT
|
226
|
+
base_entry.name = "kaltura_test"
|
227
|
+
pdf_file = File.open("test/media/test.pdf")
|
228
|
+
|
229
|
+
pdf_token = @client.base_entry_service.upload(pdf_file)
|
230
|
+
created_entry = @client.base_entry_service.add_from_uploaded_file(base_entry, pdf_token)
|
231
|
+
|
232
|
+
assert_not_nil created_entry.id
|
233
|
+
|
234
|
+
# first list the flags. should be empty
|
235
|
+
moderation_flag_list = @client.base_entry_service.list_flags(created_entry.id)
|
236
|
+
|
237
|
+
assert_equal moderation_flag_list.total_count, 0
|
238
|
+
|
239
|
+
# add a new flag for moderate
|
240
|
+
flag = Kaltura::KalturaModerationFlag.new
|
241
|
+
flag.flagged_entry_id = created_entry.id
|
242
|
+
flag.flag_type = Kaltura::KalturaModerationFlagType::SEXUAL_CONTENT
|
243
|
+
flag = @client.base_entry_service.flag(flag)
|
244
|
+
|
245
|
+
# list the flags, should be 1
|
246
|
+
moderation_flag_list = @client.base_entry_service.list_flags(created_entry.id)
|
247
|
+
|
248
|
+
assert_equal moderation_flag_list.total_count, 1
|
249
|
+
assert_equal moderation_flag_list.objects[0].status, Kaltura::KalturaModerationFlagStatus::PENDING
|
250
|
+
|
251
|
+
# approve the flags
|
252
|
+
@client.base_entry_service.approve(created_entry.id)
|
253
|
+
|
254
|
+
# list the flags, should be empty
|
255
|
+
moderation_flag_list = @client.base_entry_service.list_flags(created_entry.id)
|
256
|
+
|
257
|
+
assert_equal moderation_flag_list.total_count, 0
|
258
|
+
|
259
|
+
# get the entry and check the moderation status
|
260
|
+
created_entry = @client.base_entry_service.get(created_entry.id)
|
261
|
+
|
262
|
+
assert_equal created_entry.moderation_status, Kaltura::KalturaEntryModerationStatus::APPROVED
|
263
|
+
|
264
|
+
assert_nil @client.base_entry_service.delete(created_entry.id)
|
265
|
+
end
|
266
|
+
|
267
|
+
end
|