kaltura-client 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +3 -0
- data/kaltura.yml +4 -4
- data/lib/kaltura_client.rb +2269 -12871
- data/lib/kaltura_client_base.rb +289 -222
- data/lib/kaltura_enums.rb +3119 -0
- data/lib/kaltura_plugins/kaltura_ad_cue_point_client_plugin.rb +30 -0
- data/lib/kaltura_plugins/kaltura_admin_console_client_plugin.rb +125 -78
- data/lib/kaltura_plugins/kaltura_annotation_client_plugin.rb +76 -34
- data/lib/kaltura_plugins/kaltura_attachment_client_plugin.rb +71 -40
- data/lib/kaltura_plugins/kaltura_bulk_upload_client_plugin.rb +25 -22
- data/lib/kaltura_plugins/kaltura_bulk_upload_csv_client_plugin.rb +7 -0
- data/lib/kaltura_plugins/kaltura_bulk_upload_filter_client_plugin.rb +14 -0
- data/lib/kaltura_plugins/kaltura_bulk_upload_xml_client_plugin.rb +5 -0
- data/lib/kaltura_plugins/kaltura_caption_client_plugin.rb +167 -77
- data/lib/kaltura_plugins/kaltura_caption_search_client_plugin.rb +56 -12
- data/lib/kaltura_plugins/kaltura_cielo24client_plugin.rb +89 -0
- data/lib/kaltura_plugins/kaltura_code_cue_point_client_plugin.rb +31 -0
- data/lib/kaltura_plugins/kaltura_content_distribution_client_plugin.rb +706 -194
- data/lib/kaltura_plugins/kaltura_cue_point_client_plugin.rb +124 -34
- data/lib/kaltura_plugins/kaltura_document_client_plugin.rb +238 -102
- data/lib/kaltura_plugins/kaltura_drop_folder_client_plugin.rb +328 -55
- data/lib/kaltura_plugins/kaltura_drop_folder_xml_bulk_upload_client_plugin.rb +5 -0
- data/lib/kaltura_plugins/kaltura_email_notification_client_plugin.rb +122 -0
- data/lib/kaltura_plugins/kaltura_event_cue_point_client_plugin.rb +18 -0
- data/lib/kaltura_plugins/kaltura_event_notification_client_plugin.rb +142 -51
- data/lib/kaltura_plugins/kaltura_external_media_client_plugin.rb +54 -33
- data/lib/kaltura_plugins/kaltura_feed_drop_folder_client_plugin.rb +28 -0
- data/lib/kaltura_plugins/kaltura_file_sync_client_plugin.rb +84 -0
- data/lib/kaltura_plugins/kaltura_http_notification_client_plugin.rb +94 -0
- data/lib/kaltura_plugins/kaltura_integration_client_plugin.rb +127 -0
- data/lib/kaltura_plugins/kaltura_kaltura_internal_tools_client_plugin.rb +25 -11
- data/lib/kaltura_plugins/kaltura_kontiki_client_plugin.rb +31 -0
- data/lib/kaltura_plugins/kaltura_like_client_plugin.rb +95 -13
- data/lib/kaltura_plugins/kaltura_metadata_client_plugin.rb +331 -149
- data/lib/kaltura_plugins/kaltura_quiz_client_plugin.rb +365 -0
- data/lib/kaltura_plugins/kaltura_scheduled_task_client_plugin.rb +132 -31
- data/lib/kaltura_plugins/kaltura_scheduled_task_content_distribution_client_plugin.rb +6 -0
- data/lib/kaltura_plugins/kaltura_scheduled_task_event_notification_client_plugin.rb +6 -0
- data/lib/kaltura_plugins/kaltura_scheduled_task_metadata_client_plugin.rb +8 -0
- data/lib/kaltura_plugins/kaltura_short_link_client_plugin.rb +74 -27
- data/lib/kaltura_plugins/kaltura_system_partner_client_plugin.rb +203 -62
- data/lib/kaltura_plugins/kaltura_tag_search_client_plugin.rb +51 -14
- data/lib/kaltura_plugins/kaltura_thumb_cue_point_client_plugin.rb +44 -1
- data/lib/kaltura_plugins/kaltura_transcript_client_plugin.rb +101 -0
- data/lib/kaltura_plugins/kaltura_var_console_client_plugin.rb +59 -11
- data/lib/kaltura_plugins/kaltura_velocix_client_plugin.rb +8 -0
- data/lib/kaltura_plugins/kaltura_virus_scan_client_plugin.rb +87 -28
- data/lib/kaltura_plugins/kaltura_voicebase_client_plugin.rb +82 -0
- data/lib/kaltura_plugins/kaltura_wowza_client_plugin.rb +99 -0
- data/lib/kaltura_types.rb +13862 -0
- data/test/access_control_service_test.rb +35 -42
- data/test/base_entry_service_test.rb +265 -241
- data/test/configuration_test.rb +19 -14
- data/test/media_service_test.rb +296 -294
- data/test/metadata_profile_service_test.rb +30 -32
- data/test/response_profile_test.rb +208 -0
- data/test/test_helper.rb +3 -3
- metadata +53 -51
- data/lib/kaltura_plugins/kaltura_abc_screeners_watermark_access_control_client_plugin.rb +0 -37
- data/lib/kaltura_plugins/kaltura_aspera_client_plugin.rb +0 -61
- data/lib/kaltura_plugins/kaltura_audit_client_plugin.rb +0 -349
- data/lib/kaltura_plugins/kaltura_drm_client_plugin.rb +0 -401
- data/lib/kaltura_plugins/kaltura_multi_centers_client_plugin.rb +0 -45
- data/lib/kaltura_plugins/kaltura_play_ready_client_plugin.rb +0 -347
- data/lib/kaltura_plugins/kaltura_webex_drop_folder_client_plugin.rb +0 -111
- data/lib/kaltura_plugins/kaltura_widevine_client_plugin.rb +0 -195
data/lib/kaltura_client_base.rb
CHANGED
@@ -30,8 +30,7 @@ require 'json'
|
|
30
30
|
require 'net/http'
|
31
31
|
require 'digest/md5'
|
32
32
|
require 'rexml/document'
|
33
|
-
require '
|
34
|
-
|
33
|
+
require 'rest-client'
|
35
34
|
require 'openssl'
|
36
35
|
require 'digest/sha1'
|
37
36
|
require 'base64'
|
@@ -39,152 +38,248 @@ require 'date'
|
|
39
38
|
require 'yaml'
|
40
39
|
|
41
40
|
module Kaltura
|
42
|
-
|
43
|
-
|
41
|
+
class KalturaNotImplemented; end
|
42
|
+
|
44
43
|
class KalturaClientBase
|
45
44
|
attr_accessor :config
|
46
|
-
attr_accessor :ks
|
47
45
|
attr_reader :is_multirequest
|
48
46
|
attr_reader :responseHeaders
|
49
|
-
|
50
47
|
def initialize(config)
|
51
|
-
@ks = KalturaNotImplemented
|
52
48
|
@should_log = false
|
53
49
|
@config = config
|
54
50
|
@calls_queue = []
|
55
|
-
|
51
|
+
@client_configuration = {}
|
52
|
+
@request_configuration = {}
|
53
|
+
|
56
54
|
if @config.logger != nil
|
57
55
|
@should_log = true
|
58
56
|
end
|
59
57
|
end
|
60
|
-
|
61
|
-
def queue_service_action_call(service, action, params = {})
|
58
|
+
|
59
|
+
def queue_service_action_call(service, action, return_type, params = {}, files = {})
|
62
60
|
# in start session partner id is optional (default nil). if partner id was not set, use the one in the config
|
63
|
-
|
64
|
-
|
65
|
-
params
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
call = KalturaServiceActionCall.new(service, action, params);
|
61
|
+
|
62
|
+
@request_configuration.each do |key, value|
|
63
|
+
add_param(params, key, value)
|
64
|
+
end
|
65
|
+
|
66
|
+
call = KalturaServiceActionCall.new(service, action, return_type, params, files);
|
71
67
|
@calls_queue.push(call);
|
72
68
|
end
|
73
|
-
|
69
|
+
|
74
70
|
def do_queue()
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
71
|
+
begin
|
72
|
+
@responseHeaders = {}
|
73
|
+
start_time = Time.now
|
74
|
+
|
75
|
+
if @calls_queue.length == 0
|
76
|
+
@is_multirequest = false
|
77
|
+
return []
|
78
|
+
end
|
79
|
+
|
80
|
+
log('service url: [' + @config.service_url + ']')
|
81
|
+
|
82
|
+
# append the basic params
|
83
|
+
params = {}
|
84
|
+
files = {}
|
83
85
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
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)
|
86
|
+
url = @config.service_url+"/api_v3/"
|
87
|
+
if (@is_multirequest)
|
88
|
+
url += "service/multirequest/"
|
89
|
+
i = 0
|
90
|
+
@calls_queue.each do |call|
|
91
|
+
call_params = call.get_params_for_multirequest(i)
|
92
|
+
params.merge!(call_params)
|
93
|
+
call_files = call.get_files_for_multirequest(i)
|
94
|
+
files.merge!(call_files)
|
95
|
+
i = i.next
|
96
|
+
end
|
97
|
+
else
|
98
|
+
call = @calls_queue[0]
|
99
|
+
url += "service/#{call.service}/action/#{call.action}/"
|
100
|
+
params.merge!(call.params)
|
101
|
+
files = call.files
|
102
|
+
end
|
103
|
+
|
104
|
+
add_param(params, "format", @config.format)
|
105
|
+
@client_configuration.each do |key, value|
|
106
|
+
add_param(params, key, value)
|
107
|
+
end
|
117
108
|
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
109
|
+
signature = signature(params)
|
110
|
+
add_param(params, "kalsig", signature)
|
111
|
+
|
112
|
+
log("url: " + url)
|
113
|
+
log("params: " + params.to_yaml)
|
114
|
+
|
115
|
+
result = do_http_request(url, params, files)
|
116
|
+
|
117
|
+
@responseHeaders = result.headers
|
118
|
+
log("server: [" + result.headers[:x_me].to_s + "], session: [" + result.headers[:x_kaltura_session].to_s + "]")
|
119
|
+
|
120
|
+
log("result (xml): " + result.body)
|
121
|
+
|
122
|
+
result_object = parse_to_objects(result.body)
|
123
|
+
|
124
|
+
# reset
|
125
|
+
reset_request()
|
126
|
+
|
127
|
+
log("result (object yaml dump): " + result_object.to_yaml)
|
128
|
+
|
129
|
+
end_time = Time.now
|
130
|
+
|
131
|
+
log("execution time for [#{url}]: [#{end_time - start_time}]")
|
132
|
+
|
133
|
+
return result_object
|
134
|
+
|
135
|
+
rescue KalturaAPIError => e
|
136
|
+
raise e
|
137
|
+
rescue Exception => e
|
138
|
+
raise KalturaAPIError.new("KALTURA_RUBY_CLIENT_ERROR", e.to_s)
|
139
|
+
end
|
138
140
|
end
|
139
141
|
|
140
|
-
|
141
|
-
|
142
|
+
def reset_request()
|
143
|
+
@calls_queue = []
|
144
|
+
@is_multirequest = false
|
145
|
+
end
|
146
|
+
|
147
|
+
def get_serve_url()
|
148
|
+
url = @config.service_url+"/api_v3/service/"
|
142
149
|
|
143
150
|
call = @calls_queue[0]
|
144
|
-
url += call.service + "
|
151
|
+
url += call.service + "/action/" + call.action
|
145
152
|
params = call.params
|
146
|
-
|
153
|
+
|
147
154
|
# reset
|
148
155
|
@calls_queue = []
|
149
156
|
@is_multirequest = false
|
157
|
+
|
158
|
+
query_string = '?'
|
159
|
+
params.each do |name, value|
|
160
|
+
query_string << "#{name}=#{CGI::escape(value.to_s)}&"
|
161
|
+
end
|
162
|
+
|
163
|
+
serve_url = "#{url}#{query_string}"
|
164
|
+
|
165
|
+
log("serve_url: " + serve_url)
|
166
|
+
|
167
|
+
return serve_url
|
168
|
+
end
|
169
|
+
|
170
|
+
def do_http_request(url, params, files)
|
171
|
+
|
172
|
+
headers = @config.requestHeaders
|
173
|
+
headers[ 'Accept'] = 'text/xml';
|
174
|
+
|
175
|
+
payload = {}
|
176
|
+
|
177
|
+
if(files.size > 0)
|
178
|
+
payload = files
|
179
|
+
payload[:json] = params.to_json
|
180
|
+
else
|
181
|
+
payload = params.to_json
|
182
|
+
headers[ 'Content-Type'] = 'application/json';
|
183
|
+
end
|
150
184
|
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
185
|
+
options = {
|
186
|
+
:method => :post,
|
187
|
+
:url => url,
|
188
|
+
:headers => headers,
|
189
|
+
:timeout => @config.timeout,
|
190
|
+
:open_timeout => @config.timeout,
|
191
|
+
:payload => payload
|
192
|
+
}
|
193
|
+
|
194
|
+
log("request options: " + JSON.pretty_generate(options))
|
195
|
+
res = RestClient::Request.execute(options)
|
196
|
+
|
197
|
+
return res
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.object_from_xml(xml_element, return_type = nil)
|
201
|
+
instance = nil
|
202
|
+
if xml_element.elements.size > 0
|
203
|
+
if xml_element.elements[1].name == 'item' # array or map
|
204
|
+
if (xml_element.elements[1].elements['itemKey'].nil?) # array
|
205
|
+
instance = []
|
206
|
+
xml_element.elements.each('item') do | element |
|
207
|
+
instance.push(KalturaClientBase.object_from_xml(element, return_type))
|
208
|
+
end
|
209
|
+
else # map
|
210
|
+
instance = {}
|
211
|
+
xml_element.elements.each('item') do | element |
|
212
|
+
item_key = element.get_text('itemKey').to_s
|
213
|
+
instance[item_key] = KalturaClientBase.object_from_xml(element, return_type)
|
214
|
+
end
|
215
|
+
end
|
216
|
+
else # object
|
217
|
+
object_type_element = xml_element.get_text('objectType')
|
218
|
+
if (object_type_element != nil)
|
219
|
+
object_class = xml_element.get_text('objectType').value.to_s
|
220
|
+
kalturaModule = Module.const_get("Kaltura")
|
221
|
+
|
222
|
+
begin
|
223
|
+
instance = kalturaModule.const_get(object_class).new
|
224
|
+
rescue NameError => e
|
225
|
+
if(return_type != nil)
|
226
|
+
instance = kalturaModule.const_get(return_type).new
|
227
|
+
else
|
228
|
+
raise e
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
instance.from_xml(xml_element);
|
233
|
+
else # error
|
234
|
+
error_element = xml_element.elements['error']
|
235
|
+
if (error_element != nil)
|
236
|
+
code = xml_element.elements["error/code"].text
|
237
|
+
message = xml_element.elements["error/message"].text
|
238
|
+
|
239
|
+
instance = KalturaAPIError.new(code, message)
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
elsif return_type == nil
|
244
|
+
return nil
|
245
|
+
else # simple type
|
246
|
+
value = xml_element.text
|
247
|
+
if return_type == "int"
|
248
|
+
return value.to_i
|
249
|
+
end
|
250
|
+
|
251
|
+
return value
|
252
|
+
end
|
253
|
+
|
254
|
+
return instance;
|
255
|
+
end
|
256
|
+
|
257
|
+
def self.camelcase_to_underscore(val)
|
258
|
+
val.gsub(/(.)([A-Z])/,'\1_\2').downcase
|
259
|
+
end
|
260
|
+
|
176
261
|
def parse_to_objects(data)
|
177
262
|
parse_xml_to_objects(data)
|
178
263
|
end
|
179
|
-
|
264
|
+
|
180
265
|
def parse_xml_to_objects(xml)
|
181
266
|
doc = REXML::Document.new(xml)
|
182
267
|
raise_exception_if_error(doc)
|
183
|
-
|
184
|
-
|
268
|
+
if (@is_multirequest)
|
269
|
+
results = {}
|
270
|
+
request_index = 0
|
271
|
+
doc.elements.each('xml/result/*') do | element |
|
272
|
+
results[request_index] = KalturaClientBase.object_from_xml(element, @calls_queue[request_index].return_type)
|
273
|
+
request_index += 1
|
274
|
+
end
|
275
|
+
return results
|
276
|
+
else
|
277
|
+
doc.elements.each('xml/result') do | element |
|
278
|
+
return KalturaClientBase.object_from_xml(element, @calls_queue.first.return_type)
|
279
|
+
end
|
185
280
|
end
|
186
281
|
end
|
187
|
-
|
282
|
+
|
188
283
|
def raise_exception_if_error(doc)
|
189
284
|
if is_error(doc)
|
190
285
|
code = doc.elements["xml/result/error/code"].text
|
@@ -192,15 +287,15 @@ module Kaltura
|
|
192
287
|
raise KalturaAPIError.new(code, message)
|
193
288
|
end
|
194
289
|
end
|
195
|
-
|
290
|
+
|
196
291
|
def is_error(doc)
|
197
292
|
return doc.elements["xml/result/error/message"] && doc.elements["xml/result/error/code"];
|
198
293
|
end
|
199
|
-
|
294
|
+
|
200
295
|
def start_multirequest()
|
201
296
|
@is_multirequest = true
|
202
297
|
end
|
203
|
-
|
298
|
+
|
204
299
|
def do_multirequest()
|
205
300
|
return do_queue()
|
206
301
|
end
|
@@ -210,86 +305,93 @@ module Kaltura
|
|
210
305
|
str = kParams.keys.map {|key| key.to_s }.sort.map {|key|
|
211
306
|
"#{key}#{params[key]}"
|
212
307
|
}.join("")
|
213
|
-
|
308
|
+
|
214
309
|
Digest::MD5.hexdigest(str)
|
215
310
|
end
|
216
|
-
|
311
|
+
|
217
312
|
def add_param(params, name, value)
|
218
|
-
|
219
|
-
|
313
|
+
if value == KalturaNotImplemented
|
314
|
+
return
|
220
315
|
elsif value == nil
|
221
316
|
params[name + '__null'] = ''
|
222
317
|
elsif value.is_a? Hash
|
318
|
+
params[name] = {}
|
223
319
|
if value.empty?
|
224
|
-
add_param(params, "
|
320
|
+
add_param(params[name], "-", "");
|
225
321
|
else
|
226
322
|
value.each do |sub_name, sub_value|
|
227
|
-
add_param(params,
|
323
|
+
add_param(params[name], sub_name, sub_value);
|
324
|
+
end
|
325
|
+
end
|
326
|
+
elsif value.is_a? Array
|
327
|
+
if value.empty?
|
328
|
+
params[name] = {}
|
329
|
+
add_param(params[name], "-", "");
|
330
|
+
else
|
331
|
+
params[name] = Array.new(value.size)
|
332
|
+
value.each_with_index do |ele, i|
|
333
|
+
if ele.is_a? KalturaObjectBase
|
334
|
+
add_param(params[name], i, ele.to_params)
|
335
|
+
end
|
228
336
|
end
|
229
337
|
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
338
|
elsif value.is_a? KalturaObjectBase
|
241
339
|
add_param(params, name, value.to_params)
|
242
340
|
else
|
243
341
|
params[name] = value
|
244
342
|
end
|
245
343
|
end
|
246
|
-
|
344
|
+
|
247
345
|
# Escapes a query parameter. Taken from RFuzz
|
248
346
|
def escape(s)
|
249
347
|
s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
|
250
348
|
'%' + $1.unpack('H2'*$1.size).join('%').upcase
|
251
349
|
}.tr(' ', '+')
|
252
350
|
end
|
253
|
-
|
351
|
+
|
254
352
|
def log(msg)
|
255
353
|
if @should_log
|
256
354
|
config.logger.log(Logger::INFO, msg)
|
257
355
|
end
|
258
356
|
end
|
259
357
|
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
358
|
+
def generate_session(admin_secret, user_id, kaltura_session_type, partner_id, expiry=86400, privileges=nil)
|
359
|
+
|
360
|
+
session = "#{partner_id};#{partner_id};#{Time.now.to_i + expiry};#{kaltura_session_type};#{rand.to_s.gsub("0.", "")};#{user_id};#{privileges};"
|
361
|
+
|
362
|
+
digest_generator = OpenSSL::Digest.new('sha1')
|
363
|
+
|
364
|
+
digest_generator.update(admin_secret)
|
365
|
+
digest_generator.update(session)
|
366
|
+
|
367
|
+
digest = digest_generator.hexdigest
|
368
|
+
|
369
|
+
signature = digest + "|" + session
|
370
|
+
b64 = Base64.encode64(signature)
|
371
|
+
cleaned = b64.gsub("\n","")
|
372
|
+
|
373
|
+
self.ks = cleaned
|
374
|
+
end
|
277
375
|
end
|
278
|
-
|
376
|
+
|
279
377
|
class KalturaServiceActionCall
|
280
378
|
attr_accessor :service
|
281
379
|
attr_accessor :action
|
380
|
+
attr_accessor :return_type
|
282
381
|
attr_accessor :params
|
283
|
-
|
284
|
-
|
382
|
+
attr_accessor :files
|
383
|
+
|
384
|
+
def initialize(service, action, return_type, params, files)
|
285
385
|
@service = service
|
286
386
|
@action = action
|
387
|
+
@return_type = return_type
|
287
388
|
@params = parse_params(params)
|
389
|
+
@files = files
|
288
390
|
end
|
289
|
-
|
391
|
+
|
290
392
|
def parse_params(params)
|
291
393
|
new_params = {}
|
292
|
-
params.each do |key, val|
|
394
|
+
params.each do |key, val|
|
293
395
|
if val.kind_of? Hash
|
294
396
|
new_params[key] = parse_params(val)
|
295
397
|
else
|
@@ -298,13 +400,22 @@ module Kaltura
|
|
298
400
|
end
|
299
401
|
return new_params
|
300
402
|
end
|
301
|
-
|
403
|
+
|
302
404
|
def get_params_for_multirequest(multirequest_index)
|
303
405
|
multirequest_params = {}
|
304
|
-
multirequest_params[multirequest_index.to_s
|
305
|
-
multirequest_params[multirequest_index.to_s
|
306
|
-
|
307
|
-
|
406
|
+
multirequest_params[multirequest_index.to_s] = {}
|
407
|
+
multirequest_params[multirequest_index.to_s]["service"] = @service
|
408
|
+
multirequest_params[multirequest_index.to_s]["action"] = @action
|
409
|
+
@params.each do |key, value|
|
410
|
+
multirequest_params[multirequest_index.to_s][key] = value
|
411
|
+
end
|
412
|
+
return multirequest_params
|
413
|
+
end
|
414
|
+
|
415
|
+
def get_files_for_multirequest(multirequest_index)
|
416
|
+
multirequest_params = {}
|
417
|
+
@files.each do |key, value|
|
418
|
+
multirequest_params[multirequest_index.to_s + ":" + key] = value
|
308
419
|
end
|
309
420
|
return multirequest_params
|
310
421
|
end
|
@@ -312,10 +423,15 @@ module Kaltura
|
|
312
423
|
|
313
424
|
class KalturaObjectBase
|
314
425
|
attr_accessor :object_type
|
426
|
+
attr_accessor :related_objects
|
427
|
+
|
428
|
+
def from_xml(xml_element)
|
429
|
+
self.related_objects = KalturaClientBase.object_from_xml(xml_element.elements['relatedObjects'], 'KalturaListResponse')
|
430
|
+
end
|
315
431
|
|
316
432
|
def to_params
|
317
433
|
params = {};
|
318
|
-
params["objectType"] = self.class.name.split('::').last
|
434
|
+
params["objectType"] = self.class.name.split('::').last
|
319
435
|
instance_variables.each do |var|
|
320
436
|
value = instance_variable_get(var)
|
321
437
|
var = var.to_s.sub('@', '')
|
@@ -327,25 +443,24 @@ module Kaltura
|
|
327
443
|
params[kvar] = value;
|
328
444
|
end
|
329
445
|
else
|
330
|
-
|
446
|
+
params[kvar] = value;
|
331
447
|
end
|
332
448
|
end
|
333
449
|
return params;
|
334
450
|
end
|
335
|
-
|
451
|
+
|
336
452
|
def to_b(val)
|
337
453
|
return [true, 'true', 1, '1'].include?(val.is_a?(String) ? val.downcase : val)
|
338
454
|
end
|
339
|
-
|
455
|
+
|
340
456
|
def camelcase(val)
|
341
457
|
val = val.split('_').map { |e| e.capitalize }.join()
|
342
458
|
val[0,1].downcase + val[1,val.length]
|
343
459
|
end
|
344
460
|
end
|
345
|
-
|
461
|
+
|
346
462
|
class KalturaServiceBase
|
347
463
|
attr_accessor :client
|
348
|
-
|
349
464
|
def initialize(client)
|
350
465
|
@client = client
|
351
466
|
end
|
@@ -355,72 +470,24 @@ module Kaltura
|
|
355
470
|
attr_accessor :logger
|
356
471
|
attr_accessor :service_url
|
357
472
|
attr_accessor :format
|
358
|
-
attr_accessor :client_tag
|
359
473
|
attr_accessor :timeout
|
360
|
-
attr_accessor :partner_id
|
361
474
|
attr_accessor :requestHeaders
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
def initialize(partner_id = -1,service_url="http://www.kaltura.com")
|
369
|
-
@service_url = service_url
|
475
|
+
#
|
476
|
+
# Adding service_url to the initialize signature to pass url to your own kaltura ce instance
|
477
|
+
# Default is still set to http://www.kaltura.com.
|
478
|
+
#
|
479
|
+
def initialize()
|
480
|
+
@service_url = "http://www.kaltura.com"
|
370
481
|
@format = 2 # xml
|
371
|
-
@client_tag = "ruby:15-05-21"
|
372
482
|
@timeout = 120
|
373
|
-
@partner_id = partner_id
|
374
483
|
@requestHeaders = {}
|
375
484
|
end
|
376
|
-
|
485
|
+
|
377
486
|
def service_url=(url)
|
378
487
|
@service_url = url.chomp('/')
|
379
488
|
end
|
380
489
|
end
|
381
490
|
|
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
491
|
class KalturaAPIError < RuntimeError
|
425
492
|
attr_reader :code
|
426
493
|
attr_reader :message
|