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.
Files changed (66) hide show
  1. data/README +3 -0
  2. data/kaltura.yml +4 -4
  3. data/lib/kaltura_client.rb +2269 -12871
  4. data/lib/kaltura_client_base.rb +289 -222
  5. data/lib/kaltura_enums.rb +3119 -0
  6. data/lib/kaltura_plugins/kaltura_ad_cue_point_client_plugin.rb +30 -0
  7. data/lib/kaltura_plugins/kaltura_admin_console_client_plugin.rb +125 -78
  8. data/lib/kaltura_plugins/kaltura_annotation_client_plugin.rb +76 -34
  9. data/lib/kaltura_plugins/kaltura_attachment_client_plugin.rb +71 -40
  10. data/lib/kaltura_plugins/kaltura_bulk_upload_client_plugin.rb +25 -22
  11. data/lib/kaltura_plugins/kaltura_bulk_upload_csv_client_plugin.rb +7 -0
  12. data/lib/kaltura_plugins/kaltura_bulk_upload_filter_client_plugin.rb +14 -0
  13. data/lib/kaltura_plugins/kaltura_bulk_upload_xml_client_plugin.rb +5 -0
  14. data/lib/kaltura_plugins/kaltura_caption_client_plugin.rb +167 -77
  15. data/lib/kaltura_plugins/kaltura_caption_search_client_plugin.rb +56 -12
  16. data/lib/kaltura_plugins/kaltura_cielo24client_plugin.rb +89 -0
  17. data/lib/kaltura_plugins/kaltura_code_cue_point_client_plugin.rb +31 -0
  18. data/lib/kaltura_plugins/kaltura_content_distribution_client_plugin.rb +706 -194
  19. data/lib/kaltura_plugins/kaltura_cue_point_client_plugin.rb +124 -34
  20. data/lib/kaltura_plugins/kaltura_document_client_plugin.rb +238 -102
  21. data/lib/kaltura_plugins/kaltura_drop_folder_client_plugin.rb +328 -55
  22. data/lib/kaltura_plugins/kaltura_drop_folder_xml_bulk_upload_client_plugin.rb +5 -0
  23. data/lib/kaltura_plugins/kaltura_email_notification_client_plugin.rb +122 -0
  24. data/lib/kaltura_plugins/kaltura_event_cue_point_client_plugin.rb +18 -0
  25. data/lib/kaltura_plugins/kaltura_event_notification_client_plugin.rb +142 -51
  26. data/lib/kaltura_plugins/kaltura_external_media_client_plugin.rb +54 -33
  27. data/lib/kaltura_plugins/kaltura_feed_drop_folder_client_plugin.rb +28 -0
  28. data/lib/kaltura_plugins/kaltura_file_sync_client_plugin.rb +84 -0
  29. data/lib/kaltura_plugins/kaltura_http_notification_client_plugin.rb +94 -0
  30. data/lib/kaltura_plugins/kaltura_integration_client_plugin.rb +127 -0
  31. data/lib/kaltura_plugins/kaltura_kaltura_internal_tools_client_plugin.rb +25 -11
  32. data/lib/kaltura_plugins/kaltura_kontiki_client_plugin.rb +31 -0
  33. data/lib/kaltura_plugins/kaltura_like_client_plugin.rb +95 -13
  34. data/lib/kaltura_plugins/kaltura_metadata_client_plugin.rb +331 -149
  35. data/lib/kaltura_plugins/kaltura_quiz_client_plugin.rb +365 -0
  36. data/lib/kaltura_plugins/kaltura_scheduled_task_client_plugin.rb +132 -31
  37. data/lib/kaltura_plugins/kaltura_scheduled_task_content_distribution_client_plugin.rb +6 -0
  38. data/lib/kaltura_plugins/kaltura_scheduled_task_event_notification_client_plugin.rb +6 -0
  39. data/lib/kaltura_plugins/kaltura_scheduled_task_metadata_client_plugin.rb +8 -0
  40. data/lib/kaltura_plugins/kaltura_short_link_client_plugin.rb +74 -27
  41. data/lib/kaltura_plugins/kaltura_system_partner_client_plugin.rb +203 -62
  42. data/lib/kaltura_plugins/kaltura_tag_search_client_plugin.rb +51 -14
  43. data/lib/kaltura_plugins/kaltura_thumb_cue_point_client_plugin.rb +44 -1
  44. data/lib/kaltura_plugins/kaltura_transcript_client_plugin.rb +101 -0
  45. data/lib/kaltura_plugins/kaltura_var_console_client_plugin.rb +59 -11
  46. data/lib/kaltura_plugins/kaltura_velocix_client_plugin.rb +8 -0
  47. data/lib/kaltura_plugins/kaltura_virus_scan_client_plugin.rb +87 -28
  48. data/lib/kaltura_plugins/kaltura_voicebase_client_plugin.rb +82 -0
  49. data/lib/kaltura_plugins/kaltura_wowza_client_plugin.rb +99 -0
  50. data/lib/kaltura_types.rb +13862 -0
  51. data/test/access_control_service_test.rb +35 -42
  52. data/test/base_entry_service_test.rb +265 -241
  53. data/test/configuration_test.rb +19 -14
  54. data/test/media_service_test.rb +296 -294
  55. data/test/metadata_profile_service_test.rb +30 -32
  56. data/test/response_profile_test.rb +208 -0
  57. data/test/test_helper.rb +3 -3
  58. metadata +53 -51
  59. data/lib/kaltura_plugins/kaltura_abc_screeners_watermark_access_control_client_plugin.rb +0 -37
  60. data/lib/kaltura_plugins/kaltura_aspera_client_plugin.rb +0 -61
  61. data/lib/kaltura_plugins/kaltura_audit_client_plugin.rb +0 -349
  62. data/lib/kaltura_plugins/kaltura_drm_client_plugin.rb +0 -401
  63. data/lib/kaltura_plugins/kaltura_multi_centers_client_plugin.rb +0 -45
  64. data/lib/kaltura_plugins/kaltura_play_ready_client_plugin.rb +0 -347
  65. data/lib/kaltura_plugins/kaltura_webex_drop_folder_client_plugin.rb +0 -111
  66. data/lib/kaltura_plugins/kaltura_widevine_client_plugin.rb +0 -195
@@ -30,8 +30,7 @@ require 'json'
30
30
  require 'net/http'
31
31
  require 'digest/md5'
32
32
  require 'rexml/document'
33
- require 'rest_client'
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
- class KalturaNotImplemented; end
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
- 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);
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
- begin
76
- @responseHeaders = {}
77
- start_time = Time.now
78
-
79
- if @calls_queue.length == 0
80
- @is_multirequest = false
81
- return []
82
- end
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
- 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)
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
- @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
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
- def get_serve_url()
141
- url = @config.service_url+"/api_v3/index.php?service="
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 + "&action=" + call.action
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
- 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
-
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
- doc.elements.each('xml/result') do | element |
184
- return KalturaClassFactory.object_from_xml(element)
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
- if value == KalturaNotImplemented
219
- return
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, "#{name}:-", "");
320
+ add_param(params[name], "-", "");
225
321
  else
226
322
  value.each do |sub_name, sub_value|
227
- add_param(params, "#{name}:#{sub_name}", sub_value);
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
- 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
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
- def initialize(service, action, params = array())
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+":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]
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
- params[kvar] = value;
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
- # 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
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