kaltura_box 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +24 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +60 -0
- data/Rakefile +2 -0
- data/kaltura_box.gemspec +28 -0
- data/lib/generators/kaltura_box/install_generator.rb +16 -0
- data/lib/generators/templates/kaltura_box.rb +18 -0
- data/lib/generators/templates/kaltura_upload.js +67 -0
- data/lib/kaltura_box.rb +10 -0
- data/lib/kaltura_box/api.rb +13 -0
- data/lib/kaltura_box/category.rb +18 -0
- data/lib/kaltura_box/category/class_methods.rb +50 -0
- data/lib/kaltura_box/category/instance_methods.rb +30 -0
- data/lib/kaltura_box/client.rb +45 -0
- data/lib/kaltura_box/configuration.rb +22 -0
- data/lib/kaltura_box/entry.rb +36 -0
- data/lib/kaltura_box/entry/class_methods.rb +51 -0
- data/lib/kaltura_box/entry/instance_methods.rb +13 -0
- data/lib/kaltura_box/entry/metadata.rb +152 -0
- data/lib/kaltura_box/entry/metadata/class_and_instance_methods.rb +54 -0
- data/lib/kaltura_box/entry/metadata/class_methods.rb +69 -0
- data/lib/kaltura_box/version.rb +3 -0
- data/spec/api_spec.rb +22 -0
- data/spec/category_spec.rb +51 -0
- data/spec/entry_spec.rb +38 -0
- data/spec/metadata_spec.rb +256 -0
- data/spec/spec_helper.rb +68 -0
- data/spec/support/video.flv +0 -0
- data/vendor/kaltura-ruby-client/README +20 -0
- data/vendor/kaltura-ruby-client/Rakefile +19 -0
- data/vendor/kaltura-ruby-client/kaltura.gemspec +15 -0
- data/vendor/kaltura-ruby-client/kaltura.yml +7 -0
- data/vendor/kaltura-ruby-client/lib/kaltura.rb +31 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_client.rb +14450 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_client_base.rb +432 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_abc_screeners_watermark_access_control_client_plugin.rb +37 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_ad_cue_point_client_plugin.rb +108 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_annotation_client_plugin.rb +237 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_aspera_client_plugin.rb +61 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_attachment_client_plugin.rb +227 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_audit_client_plugin.rb +349 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_bulk_upload_client_plugin.rb +109 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_bulk_upload_csv_client_plugin.rb +55 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_bulk_upload_filter_client_plugin.rb +46 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_bulk_upload_xml_client_plugin.rb +40 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_caption_client_plugin.rb +406 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_caption_search_client_plugin.rb +138 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_code_cue_point_client_plugin.rb +97 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_content_distribution_client_plugin.rb +1717 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_cue_point_client_plugin.rb +290 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_document_client_plugin.rb +522 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_drm_client_plugin.rb +204 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_drop_folder_client_plugin.rb +810 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_drop_folder_xml_bulk_upload_client_plugin.rb +39 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_email_notification_client_plugin.rb +276 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_event_notification_client_plugin.rb +405 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_external_media_client_plugin.rb +203 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_file_sync_client_plugin.rb +151 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_http_notification_client_plugin.rb +309 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_kontiki_client_plugin.rb +72 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_like_client_plugin.rb +82 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_metadata_client_plugin.rb +788 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_multi_centers_client_plugin.rb +45 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_short_link_client_plugin.rb +231 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_tag_search_client_plugin.rb +145 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_var_console_client_plugin.rb +238 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_velocix_client_plugin.rb +40 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_virus_scan_client_plugin.rb +263 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_webex_drop_folder_client_plugin.rb +121 -0
- data/vendor/kaltura-ruby-client/lib/kaltura_plugins/kaltura_widevine_client_plugin.rb +195 -0
- data/vendor/kaltura-ruby-client/license.txt +674 -0
- data/vendor/kaltura-ruby-client/test/access_control_service_test.rb +75 -0
- data/vendor/kaltura-ruby-client/test/base_entry_service_test.rb +267 -0
- data/vendor/kaltura-ruby-client/test/configuration_test.rb +178 -0
- data/vendor/kaltura-ruby-client/test/cue_point_service_test.rb +67 -0
- data/vendor/kaltura-ruby-client/test/data_service_test.rb +76 -0
- data/vendor/kaltura-ruby-client/test/document_service_test.rb +41 -0
- data/vendor/kaltura-ruby-client/test/media/test.mov +0 -0
- data/vendor/kaltura-ruby-client/test/media/test.pdf +0 -0
- data/vendor/kaltura-ruby-client/test/media/test.png +0 -0
- data/vendor/kaltura-ruby-client/test/media/test.swf +0 -0
- data/vendor/kaltura-ruby-client/test/media/test.wmv +0 -0
- data/vendor/kaltura-ruby-client/test/media_service_test.rb +294 -0
- data/vendor/kaltura-ruby-client/test/metadata_profile_service_test.rb +63 -0
- data/vendor/kaltura-ruby-client/test/test_helper.rb +59 -0
- metadata +220 -0
@@ -0,0 +1,432 @@
|
|
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 'rubygems'
|
29
|
+
require 'json'
|
30
|
+
require 'net/http'
|
31
|
+
require 'digest/md5'
|
32
|
+
require 'rexml/document'
|
33
|
+
require 'rest_client'
|
34
|
+
|
35
|
+
require 'openssl'
|
36
|
+
require 'digest/sha1'
|
37
|
+
require 'base64'
|
38
|
+
require 'date'
|
39
|
+
require 'yaml'
|
40
|
+
|
41
|
+
module Kaltura
|
42
|
+
class KalturaNotImplemented; end
|
43
|
+
|
44
|
+
class KalturaClientBase
|
45
|
+
attr_accessor :config
|
46
|
+
attr_accessor :ks
|
47
|
+
attr_reader :is_multirequest
|
48
|
+
attr_reader :responseHeaders
|
49
|
+
|
50
|
+
def initialize(config)
|
51
|
+
@ks = KalturaNotImplemented
|
52
|
+
@should_log = false
|
53
|
+
@config = config
|
54
|
+
@calls_queue = []
|
55
|
+
|
56
|
+
if @config.logger != nil
|
57
|
+
@should_log = true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def queue_service_action_call(service, action, params = {})
|
62
|
+
# in start session partner id is optional (default nil). if partner id was not set, use the one in the config
|
63
|
+
if !params.key?('partnerId')
|
64
|
+
params['partnerId'] = config.partner_id
|
65
|
+
params.delete('partnerId__null') if params.key?('partnerId__null')
|
66
|
+
end
|
67
|
+
|
68
|
+
add_param(params, 'ks', @ks);
|
69
|
+
|
70
|
+
call = KalturaServiceActionCall.new(service, action, params);
|
71
|
+
@calls_queue.push(call);
|
72
|
+
end
|
73
|
+
|
74
|
+
def do_queue()
|
75
|
+
begin
|
76
|
+
@responseHeaders = {}
|
77
|
+
start_time = Time.now
|
78
|
+
|
79
|
+
if @calls_queue.length == 0
|
80
|
+
@is_multirequest = false
|
81
|
+
return []
|
82
|
+
end
|
83
|
+
|
84
|
+
log('service url: [' + @config.service_url + ']')
|
85
|
+
|
86
|
+
# append the basic params
|
87
|
+
params = {}
|
88
|
+
add_param(params, "format", @config.format)
|
89
|
+
add_param(params, "clientTag", @config.client_tag)
|
90
|
+
|
91
|
+
url = @config.service_url+"/api_v3/index.php?service="
|
92
|
+
if (@is_multirequest)
|
93
|
+
url += "multirequest"
|
94
|
+
i = 1
|
95
|
+
@calls_queue.each do |call|
|
96
|
+
call_params = call.get_params_for_multirequest(i)
|
97
|
+
params.merge!(call_params)
|
98
|
+
i = i.next
|
99
|
+
end
|
100
|
+
else
|
101
|
+
call = @calls_queue[0]
|
102
|
+
url += call.service + "&action=" + call.action
|
103
|
+
params.merge!(call.params)
|
104
|
+
end
|
105
|
+
|
106
|
+
# reset
|
107
|
+
@calls_queue = []
|
108
|
+
@is_multirequest = false
|
109
|
+
|
110
|
+
signature = signature(params)
|
111
|
+
add_param(params, "kalsig", signature)
|
112
|
+
|
113
|
+
log("url: " + url)
|
114
|
+
log("params: " + params.to_yaml)
|
115
|
+
|
116
|
+
result = do_http_request(url, params)
|
117
|
+
|
118
|
+
@responseHeaders = result.headers
|
119
|
+
log("server: [" + result.headers[:x_me].to_s + "], session: [" + result.headers[:x_kaltura_session].to_s + "]")
|
120
|
+
|
121
|
+
log("result (xml): " + result.body)
|
122
|
+
|
123
|
+
result_object = parse_to_objects(result.body)
|
124
|
+
|
125
|
+
log("result (object yaml dump): " + result_object.to_yaml)
|
126
|
+
|
127
|
+
end_time = Time.now
|
128
|
+
|
129
|
+
log("execution time for [#{url}]: [#{end_time - start_time}]")
|
130
|
+
|
131
|
+
return result_object
|
132
|
+
|
133
|
+
rescue KalturaAPIError => e
|
134
|
+
raise e
|
135
|
+
rescue Exception => e
|
136
|
+
raise KalturaAPIError.new("KALTURA_RUBY_CLIENT_ERROR", e.to_s)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def get_serve_url()
|
141
|
+
url = @config.service_url+"/api_v3/index.php?service="
|
142
|
+
|
143
|
+
call = @calls_queue[0]
|
144
|
+
url += call.service + "&action=" + call.action
|
145
|
+
params = call.params
|
146
|
+
|
147
|
+
# reset
|
148
|
+
@calls_queue = []
|
149
|
+
@is_multirequest = false
|
150
|
+
|
151
|
+
query_string = ''
|
152
|
+
params.each do |name, value|
|
153
|
+
query_string << "&#{name}=#{CGI::escape(value.to_s)}"
|
154
|
+
end
|
155
|
+
|
156
|
+
serve_url = "#{url}#{query_string}"
|
157
|
+
|
158
|
+
log("serve_url: " + serve_url)
|
159
|
+
|
160
|
+
return serve_url
|
161
|
+
end
|
162
|
+
|
163
|
+
def do_http_request(url, params)
|
164
|
+
|
165
|
+
options = {:method => :post, :url => url, :payload => params}
|
166
|
+
|
167
|
+
options.merge!(:headers => @config.requestHeaders)
|
168
|
+
options.merge!(:timeout => @config.timeout) if @config.timeout
|
169
|
+
options.merge!(:open_timeout => @config.timeout) if @config.timeout
|
170
|
+
|
171
|
+
res = RestClient::Request.execute(options)
|
172
|
+
|
173
|
+
return res
|
174
|
+
end
|
175
|
+
|
176
|
+
def parse_to_objects(data)
|
177
|
+
parse_xml_to_objects(data)
|
178
|
+
end
|
179
|
+
|
180
|
+
def parse_xml_to_objects(xml)
|
181
|
+
doc = REXML::Document.new(xml)
|
182
|
+
raise_exception_if_error(doc)
|
183
|
+
doc.elements.each('xml/result') do | element |
|
184
|
+
return KalturaClassFactory.object_from_xml(element)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
def raise_exception_if_error(doc)
|
189
|
+
if is_error(doc)
|
190
|
+
code = doc.elements["xml/result/error/code"].text
|
191
|
+
message = doc.elements["xml/result/error/message"].text
|
192
|
+
raise KalturaAPIError.new(code, message)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
def is_error(doc)
|
197
|
+
return doc.elements["xml/result/error/message"] && doc.elements["xml/result/error/code"];
|
198
|
+
end
|
199
|
+
|
200
|
+
def start_multirequest()
|
201
|
+
@is_multirequest = true
|
202
|
+
end
|
203
|
+
|
204
|
+
def do_multirequest()
|
205
|
+
return do_queue()
|
206
|
+
end
|
207
|
+
|
208
|
+
def signature(params)
|
209
|
+
kParams = params.select { |key, value| !value.is_a?(File) }
|
210
|
+
str = kParams.keys.map {|key| key.to_s }.sort.map {|key|
|
211
|
+
"#{key}#{params[key]}"
|
212
|
+
}.join("")
|
213
|
+
|
214
|
+
Digest::MD5.hexdigest(str)
|
215
|
+
end
|
216
|
+
|
217
|
+
def add_param(params, name, value)
|
218
|
+
if value == KalturaNotImplemented
|
219
|
+
return
|
220
|
+
elsif value == nil
|
221
|
+
params[name + '__null'] = ''
|
222
|
+
elsif value.is_a? Hash
|
223
|
+
if value.empty?
|
224
|
+
add_param(params, "#{name}:-", "");
|
225
|
+
else
|
226
|
+
value.each do |sub_name, sub_value|
|
227
|
+
add_param(params, "#{name}:#{sub_name}", sub_value);
|
228
|
+
end
|
229
|
+
end
|
230
|
+
elsif value.is_a? Array
|
231
|
+
if value.empty?
|
232
|
+
add_param(params, "#{name}:-", "");
|
233
|
+
else
|
234
|
+
value.each_with_index do |ele, i|
|
235
|
+
if ele.is_a? KalturaObjectBase
|
236
|
+
add_param(params, "#{name}:#{i}", ele.to_params)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
elsif value.is_a? KalturaObjectBase
|
241
|
+
add_param(params, name, value.to_params)
|
242
|
+
else
|
243
|
+
params[name] = value
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
# Escapes a query parameter. Taken from RFuzz
|
248
|
+
def escape(s)
|
249
|
+
s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
|
250
|
+
'%' + $1.unpack('H2'*$1.size).join('%').upcase
|
251
|
+
}.tr(' ', '+')
|
252
|
+
end
|
253
|
+
|
254
|
+
def log(msg)
|
255
|
+
if @should_log
|
256
|
+
config.logger.log(Logger::INFO, msg)
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
def generate_session(admin_secret, user_id, kaltura_session_type, partner_id, expiry=86400, privileges=nil)
|
261
|
+
|
262
|
+
ks = "#{partner_id};#{partner_id};#{Time.now.to_i + expiry};#{kaltura_session_type};#{rand.to_s.gsub("0.", "")};#{user_id};#{privileges};"
|
263
|
+
|
264
|
+
digest_generator = OpenSSL::Digest::Digest.new('sha1')
|
265
|
+
|
266
|
+
digest_generator.update(admin_secret)
|
267
|
+
digest_generator.update(ks)
|
268
|
+
|
269
|
+
digest = digest_generator.hexdigest
|
270
|
+
|
271
|
+
signature = digest + "|" + ks
|
272
|
+
b64 = Base64.encode64(signature)
|
273
|
+
cleaned = b64.gsub("\n","")
|
274
|
+
|
275
|
+
@ks = cleaned
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
class KalturaServiceActionCall
|
280
|
+
attr_accessor :service
|
281
|
+
attr_accessor :action
|
282
|
+
attr_accessor :params
|
283
|
+
|
284
|
+
def initialize(service, action, params = array())
|
285
|
+
@service = service
|
286
|
+
@action = action
|
287
|
+
@params = parse_params(params)
|
288
|
+
end
|
289
|
+
|
290
|
+
def parse_params(params)
|
291
|
+
new_params = {}
|
292
|
+
params.each do |key, val|
|
293
|
+
if val.kind_of? Hash
|
294
|
+
new_params[key] = parse_params(val)
|
295
|
+
else
|
296
|
+
new_params[key] = val
|
297
|
+
end
|
298
|
+
end
|
299
|
+
return new_params
|
300
|
+
end
|
301
|
+
|
302
|
+
def get_params_for_multirequest(multirequest_index)
|
303
|
+
multirequest_params = {}
|
304
|
+
multirequest_params[multirequest_index.to_s+":service"] = @service
|
305
|
+
multirequest_params[multirequest_index.to_s+":action"] = @action
|
306
|
+
@params.each_key do |key|
|
307
|
+
multirequest_params[multirequest_index.to_s+":"+key] = @params[key]
|
308
|
+
end
|
309
|
+
return multirequest_params
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
class KalturaObjectBase
|
314
|
+
attr_accessor :object_type
|
315
|
+
|
316
|
+
def to_params
|
317
|
+
params = {};
|
318
|
+
params["objectType"] = self.class.name.split('::').last
|
319
|
+
instance_variables.each do |var|
|
320
|
+
value = instance_variable_get(var)
|
321
|
+
var = var.to_s.sub('@', '')
|
322
|
+
kvar = camelcase(var)
|
323
|
+
if (value != nil)
|
324
|
+
if (value.is_a? KalturaObjectBase)
|
325
|
+
params[kvar] = value.to_params;
|
326
|
+
else
|
327
|
+
params[kvar] = value;
|
328
|
+
end
|
329
|
+
else
|
330
|
+
params[kvar] = value;
|
331
|
+
end
|
332
|
+
end
|
333
|
+
return params;
|
334
|
+
end
|
335
|
+
|
336
|
+
def to_b(val)
|
337
|
+
return [true, 'true', 1, '1'].include?(val.is_a?(String) ? val.downcase : val)
|
338
|
+
end
|
339
|
+
|
340
|
+
def camelcase(val)
|
341
|
+
val = val.split('_').map { |e| e.capitalize }.join()
|
342
|
+
val[0,1].downcase + val[1,val.length]
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
class KalturaServiceBase
|
347
|
+
attr_accessor :client
|
348
|
+
|
349
|
+
def initialize(client)
|
350
|
+
@client = client
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
class KalturaConfiguration
|
355
|
+
attr_accessor :logger
|
356
|
+
attr_accessor :service_url
|
357
|
+
attr_accessor :format
|
358
|
+
attr_accessor :client_tag
|
359
|
+
attr_accessor :timeout
|
360
|
+
attr_accessor :partner_id
|
361
|
+
attr_accessor :requestHeaders
|
362
|
+
|
363
|
+
#
|
364
|
+
# Adding service_url to the initialize signature to pass url to your own kaltura ce instance
|
365
|
+
# Default is still set to http://www.kaltura.com.
|
366
|
+
#
|
367
|
+
|
368
|
+
def initialize(partner_id = -1,service_url="http://www.kaltura.com")
|
369
|
+
@service_url = service_url
|
370
|
+
@format = 2 # xml
|
371
|
+
@client_tag = "ruby:14-01-16"
|
372
|
+
@timeout = 120
|
373
|
+
@partner_id = partner_id
|
374
|
+
@requestHeaders = {}
|
375
|
+
end
|
376
|
+
|
377
|
+
def service_url=(url)
|
378
|
+
@service_url = url.chomp('/')
|
379
|
+
end
|
380
|
+
end
|
381
|
+
|
382
|
+
class KalturaClassFactory
|
383
|
+
def self.object_from_xml(xml_element)
|
384
|
+
instance = nil
|
385
|
+
if xml_element.elements.size > 0
|
386
|
+
if xml_element.elements[1].name == 'item' # array
|
387
|
+
instance = []
|
388
|
+
xml_element.elements.each('item') do | element |
|
389
|
+
instance.push(KalturaClassFactory.object_from_xml(element))
|
390
|
+
end
|
391
|
+
else # object
|
392
|
+
object_type_element = xml_element.get_text('objectType')
|
393
|
+
if (object_type_element != nil)
|
394
|
+
object_class = xml_element.get_text('objectType').value.to_s
|
395
|
+
instance = Module.const_get("Kaltura")
|
396
|
+
instance = instance.const_get(object_class).new
|
397
|
+
|
398
|
+
xml_element.elements.each do | element |
|
399
|
+
value = KalturaClassFactory.object_from_xml(element)
|
400
|
+
instance.send(self.underscore(element.name) + "=", value) if instance.class.method_defined?(self.underscore(element.name));
|
401
|
+
end
|
402
|
+
else # error
|
403
|
+
error_element = xml_element.elements['error']
|
404
|
+
if (error_element != nil)
|
405
|
+
code = xml_element.elements["error/code"].text
|
406
|
+
message = xml_element.elements["error/message"].text
|
407
|
+
|
408
|
+
instance = KalturaAPIError.new(code, message)
|
409
|
+
end
|
410
|
+
end
|
411
|
+
end
|
412
|
+
else # simple type
|
413
|
+
return xml_element.text
|
414
|
+
end
|
415
|
+
|
416
|
+
return instance;
|
417
|
+
end
|
418
|
+
|
419
|
+
def self.underscore(val)
|
420
|
+
val.gsub(/(.)([A-Z])/,'\1_\2').downcase
|
421
|
+
end
|
422
|
+
end
|
423
|
+
|
424
|
+
class KalturaAPIError < RuntimeError
|
425
|
+
attr_reader :code
|
426
|
+
attr_reader :message
|
427
|
+
def initialize(code, message)
|
428
|
+
@code = code
|
429
|
+
@message = message
|
430
|
+
end
|
431
|
+
end
|
432
|
+
end
|
@@ -0,0 +1,37 @@
|
|
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
|
+
|
30
|
+
module Kaltura
|
31
|
+
|
32
|
+
class KalturaABCScreenersWatermarkCondition < KalturaCondition
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end
|