acts_as_kaltura 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,7 @@ require 'active_support/core_ext'
2
2
  require 'acts_as_kaltura/version'
3
3
  require 'acts_as_kaltura/two_way_attr_accessor'
4
4
  require 'acts_as_kaltura/config'
5
+ require 'acts_as_kaltura/client'
5
6
  require 'acts_as_kaltura/callbacks'
6
7
  require 'acts_as_kaltura/delegator'
7
8
  require 'acts_as_kaltura/extension'
@@ -15,6 +16,7 @@ end
15
16
  module ActiveRecord
16
17
  class Base
17
18
  include ActsAsKaltura::Config
19
+ include ActsAsKaltura::Client
18
20
  include ActsAsKaltura::Callbacks
19
21
  include ActsAsKaltura::Delegator
20
22
  include ActsAsKaltura::Video
@@ -5,7 +5,9 @@ module ActsAsKaltura
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  module ClassMethods
8
- def acts_as_kaltura_category
8
+ def acts_as_kaltura_category(options = {})
9
+ self._kaltura_options = options
10
+
9
11
  before_create :create_kaltura_category
10
12
  before_update :update_kaltura_category
11
13
  before_destroy :destroy_kaltura_category
@@ -20,6 +22,12 @@ module ActsAsKaltura
20
22
  end
21
23
  end
22
24
 
25
+ def kaltura_parent_categories
26
+ filter = Kaltura::Filter::CategoryFilter.new
27
+ filter.parent_id_equal = 0
28
+ local_or_global_kaltura_client.category_service.list(filter)
29
+ end
30
+
23
31
  def kaltura_category
24
32
  if @kaltura_category.nil? && self.kaltura_category_key.present?
25
33
  @kaltura_category = self.class.kaltura_client.
@@ -48,7 +56,7 @@ module ActsAsKaltura
48
56
  private
49
57
  def create_kaltura_category
50
58
  if kaltura_reference_found?
51
- @kaltura_category = self.class.kaltura_client.
59
+ @kaltura_category = local_or_global_kaltura_client.
52
60
  category_service.add self.as_kaltura_category
53
61
  self.kaltura_category_key = @kaltura_category.id
54
62
  end
@@ -56,14 +64,14 @@ module ActsAsKaltura
56
64
 
57
65
  def update_kaltura_category
58
66
  if self.kaltura_category_key.present?
59
- @kaltura_category = self.class.kaltura_client.category_service.
67
+ @kaltura_category = local_or_global_kaltura_client.category_service.
60
68
  update(self.kaltura_category_key, self.as_kaltura_category)
61
69
  end
62
70
  end
63
71
 
64
72
  def destroy_kaltura_category
65
73
  if self.kaltura_category_key.present?
66
- self.class.kaltura_client.category_service.
74
+ local_or_global_kaltura_client.category_service.
67
75
  delete(self.kaltura_category_key)
68
76
  @kaltura_category = nil
69
77
  end
@@ -0,0 +1,107 @@
1
+ require 'active_support/concern'
2
+
3
+ module ActsAsKaltura
4
+ module Client
5
+ extend ActiveSupport::Concern
6
+
7
+ class Logger
8
+ def log(*args)
9
+ puts args
10
+ end
11
+ end
12
+
13
+ included do
14
+ class_eval <<-CODE
15
+ attr_accessor :_instance_kaltura_client
16
+ cattr_accessor :_kaltura_client
17
+ CODE
18
+ end
19
+
20
+ # Find an existing client instance or create one based on :setting_scope
21
+ # configuration.
22
+ # Returns kaltura client instance.
23
+ def kaltura_client
24
+ @kaltura_client ||= _create_kaltura_client
25
+ end
26
+
27
+ # Find local kaltura client instance if overrode over :setting_scope
28
+ # otherwise return the global client instance
29
+ def local_or_global_kaltura_client
30
+ if self.class.overrode_kaltura_client?
31
+ self.kaltura_client
32
+ else
33
+ self.class.kaltura_client
34
+ end
35
+ end
36
+
37
+ def _create_kaltura_client
38
+ @@_kaltura_clients ||= {}
39
+ config_callback = self._kaltura_options[:setting_scope]
40
+
41
+ unless config_callback.present?
42
+ raise "acts_as_kaltura_... :setting_scope => ... is not defined."
43
+ end
44
+
45
+ configs = config_callback.call(self)
46
+ @@_kaltura_clients[configs] ||= self.class.create_kaltura_client(configs)
47
+ end
48
+
49
+ module ClassMethods
50
+
51
+ # Create or return an existing kaltura client instance for the given
52
+ # environment. If configuration is based on instance. Create or return
53
+ # kaltura client instance for the given configuration and set it on
54
+ # +_instance_kaltura_client+ .
55
+ def kaltura_client(env = Rails.env.to_s)
56
+ if self._kaltura_client.nil?
57
+ self._kaltura_client = create_kaltura_client(kaltura_configs(env))
58
+ end
59
+
60
+ self._kaltura_client
61
+ end
62
+
63
+ def reload_kaltura_client(env = Rails.env.to_s)
64
+ self._kaltura_client = nil
65
+ self.kaltura_client(env)
66
+ end
67
+
68
+ def create_kaltura_client(configs)
69
+ config = _create_kaltura_config(configs)
70
+
71
+ Kaltura::Client.new(config).tap do |client|
72
+ session = client.session_service.start(
73
+ configs[:admin_secret], '',
74
+ Kaltura::Constants::SessionType::ADMIN
75
+ )
76
+ client.ks = session
77
+ end
78
+ end
79
+
80
+ private
81
+
82
+ def _create_kaltura_config(configs)
83
+ Kaltura::Configuration.new(configs[:partner_id]).tap do |config|
84
+ if configs[:timeout].present?
85
+ config.timeout = configs[:timeout]
86
+ end
87
+
88
+ if configs[:debug]
89
+ config.logger = ActsAsKaltura::Client::Logger.new
90
+ _debug_response
91
+ end
92
+ end
93
+ end
94
+
95
+ def _debug_response
96
+ if %w(test development).include?(Rails.env)
97
+ Kaltura::ClientBase.class_eval <<-CODE
98
+ def parse_to_objects(data)
99
+ puts data
100
+ parse_xml_to_objects(data)
101
+ end
102
+ CODE
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -12,80 +12,39 @@ module ActsAsKaltura
12
12
  end
13
13
 
14
14
  included do
15
- @@_kaltura_config_file = nil
16
-
17
- class << self
18
- def _kaltura_config_file=(file)
19
- @@_kaltura_config_file = file
20
- end
15
+ class_eval <<-CODE, __FILE__, __LINE__ + 1
16
+ class_attribute :_kaltura_config_file, :_kaltura_configs
17
+ class_attribute :_kaltura_options, :instance_writer => false
21
18
 
22
19
  def _kaltura_config_file
23
20
  if @@_kaltura_config_file.nil?
24
- @@_kaltura_config_file = Rails.root.join('config', 'kaltura.yml').to_s
21
+ @@_kaltura_config_file = (defined?(Rails) ? Rails.root : File).join('config', 'kaltura.yml').to_s
25
22
  end
26
23
 
27
24
  @@_kaltura_config_file
28
25
  end
29
- end
30
-
31
- cattr_accessor :_kaltura_client
32
- cattr_accessor :_company_setting
26
+ CODE
33
27
  end
34
28
 
35
29
  module ClassMethods
36
- def kaltura_configs(env = Rails.env.to_s)
37
- if !defined?(@@_kaltura_configs)
38
- @@_kaltura_configs = YAML.load(File.read(_kaltura_config_file)).with_indifferent_access
39
- end
40
30
 
41
- @@_kaltura_configs[env]
31
+ def overrode_kaltura_client?
32
+ _kaltura_options.include?(:setting_scope)
42
33
  end
43
34
 
44
- def kaltura_client(env = Rails.env.to_s)
45
- if _kaltura_client.nil?
46
- if _company_setting.present?
47
- configs = _company_setting
48
- else
49
- configs = kaltura_configs(env)
50
- end
51
-
52
- config = Kaltura::Configuration.new(configs[:partner_id])
53
-
54
- # Set timeout if mentioned in configuration
55
- if configs[:timeout].present?
56
- config.timeout = configs[:timeout]
57
- end
58
-
59
- # Set debug logger if mentioned in configuration
60
- if configs[:debug]
61
- config.logger = ActsAsKaltura::Config::Logger.new
62
- _debug_response
63
- end
64
-
65
- client = Kaltura::Client.new(config)
66
- session = client.session_service.start(
67
- configs[:admin_secret], '', Kaltura::Constants::SessionType::ADMIN)
68
- client.ks = session
69
- _kaltura_client = client
35
+ # Read kaltura YAML file and retrieve configuration for the given
36
+ # environment. Returns a hash of kaltura configuration.
37
+ #
38
+ # kaltura_config('production')
39
+ #
40
+ def kaltura_configs(env = Rails.env.to_s)
41
+ if self._kaltura_configs.nil?
42
+ self._kaltura_configs =
43
+ YAML.load(File.read(self._kaltura_config_file)).
44
+ with_indifferent_access
70
45
  end
71
46
 
72
- _kaltura_client
73
- end
74
-
75
- def reload_kaltura_client(env = Rails.env.to_s)
76
- _kaltura_client = nil
77
- kaltura_client
78
- end
79
-
80
- def _debug_response
81
- if ['test', 'development'].include?(Rails.env)
82
- Kaltura::ClientBase.class_eval do
83
- def parse_to_objects(data)
84
- puts data
85
- parse_xml_to_objects(data)
86
- end
87
- end
88
- end
47
+ self._kaltura_configs[env]
89
48
  end
90
49
  end
91
50
  end
@@ -8,10 +8,6 @@ module ActsAsKaltura
8
8
  class NoUploadedTokenFound < ::StandardError; end
9
9
  class KalturaVideoAddFailure < ::StandardError; end
10
10
 
11
- included do
12
- class_attribute :_kaltura_options, :instance_writer => false
13
- end
14
-
15
11
  module ClassMethods
16
12
  def acts_as_kaltura_video(options = { })
17
13
  # Set instance accessors
@@ -27,7 +23,6 @@ module ActsAsKaltura
27
23
  validates :video_file, :presence => { :on => :create }
28
24
 
29
25
  # Set filters
30
- after_validation :init_setting_scope
31
26
  before_save :process_uploaded_video_file
32
27
  before_create :create_kaltura_video_entry
33
28
  before_update :update_kaltura_video_entry
@@ -39,14 +34,6 @@ module ActsAsKaltura
39
34
  # Push user uploaded video file to kaltura server
40
35
  # If successful set upload token with the object
41
36
  #
42
-
43
- def init_setting_scope
44
- if self._kaltura_options[:setting_scope].present?
45
- setting = self._kaltura_options[:setting_scope]
46
- self.class._company_setting = setting.call(self)
47
- end
48
- end
49
-
50
37
  def process_uploaded_video_file
51
38
  if @video_file.present?
52
39
  video_file_stream = if @video_file.respond_to?(:path, true)
@@ -54,12 +41,13 @@ module ActsAsKaltura
54
41
  else
55
42
  @video_file
56
43
  end
57
- @uploaded_video_token = self.class.kaltura_client.
44
+ @uploaded_video_token = local_or_global_kaltura_client.
58
45
  media_service.upload(video_file_stream)
59
46
  raise ActsAsKaltura::Video::NoUploadedTokenFound if @uploaded_video_token.nil?
60
47
  end
61
48
  end
62
49
 
50
+ #
63
51
  # Create kaltura video entry based on current video data
64
52
  # if successful set kaltura id
65
53
  #
@@ -122,14 +110,14 @@ module ActsAsKaltura
122
110
  private
123
111
  def add_kaltuar_video_file(entry)
124
112
  if @video_file && @uploaded_video_token
125
- self.class.kaltura_client.media_service.
113
+ local_or_global_kaltura_client.media_service.
126
114
  add_from_uploaded_file(entry, @uploaded_video_token)
127
115
  end
128
116
  end
129
117
 
130
118
  def update_kaltura_entry(entry)
131
119
  if kaltura_key.present?
132
- self.class.kaltura_client.media_service.update(kaltura_key, entry)
120
+ local_or_global_kaltura_client.media_service.update(kaltura_key, entry)
133
121
  self.kaltura_syncd_at = Time.now
134
122
  end
135
123
  end
@@ -137,7 +125,7 @@ module ActsAsKaltura
137
125
  def find_kaltura_entry
138
126
  if kaltura_key
139
127
  if @kaltura_entry.nil?
140
- @kaltura_entry = self.class.kaltura_client.media_service.get(kaltura_key)
128
+ @kaltura_entry = local_or_global_kaltura_client.media_service.get(kaltura_key)
141
129
  end
142
130
 
143
131
  @kaltura_entry
@@ -146,7 +134,7 @@ module ActsAsKaltura
146
134
 
147
135
  def destroy_kaltura_entry
148
136
  if kaltura_key
149
- self.class.kaltura_client.media_service.delete(kaltura_key)
137
+ local_or_global_kaltura_client.media_service.delete(kaltura_key)
150
138
  @kaltura_entry = nil
151
139
  end
152
140
  rescue
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_kaltura
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-30 00:00:00.000000000 Z
13
+ date: 2012-07-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: jeweler
17
- requirement: &2154510640 !ruby/object:Gem::Requirement
17
+ requirement: &2152378260 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2154510640
25
+ version_requirements: *2152378260
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: velir_kaltura-ruby
28
- requirement: &2154510120 !ruby/object:Gem::Requirement
28
+ requirement: &2152376220 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2154510120
36
+ version_requirements: *2152376220
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: activesupport
39
- requirement: &2154509620 !ruby/object:Gem::Requirement
39
+ requirement: &2152395540 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: 3.0.0
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2154509620
47
+ version_requirements: *2152395540
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: activerecord
50
- requirement: &2154509100 !ruby/object:Gem::Requirement
50
+ requirement: &2152394240 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,7 +55,7 @@ dependencies:
55
55
  version: 3.0.0
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2154509100
58
+ version_requirements: *2152394240
59
59
  description: Acts as kaltura
60
60
  email:
61
61
  - hasan@somewherein.net
@@ -69,6 +69,7 @@ files:
69
69
  - lib/acts_as_kaltura/annotation.rb
70
70
  - lib/acts_as_kaltura/callbacks.rb
71
71
  - lib/acts_as_kaltura/category.rb
72
+ - lib/acts_as_kaltura/client.rb
72
73
  - lib/acts_as_kaltura/config.rb
73
74
  - lib/acts_as_kaltura/delegator.rb
74
75
  - lib/acts_as_kaltura/extension.rb