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.
- data/lib/acts_as_kaltura.rb +2 -0
- data/lib/acts_as_kaltura/category.rb +12 -4
- data/lib/acts_as_kaltura/client.rb +107 -0
- data/lib/acts_as_kaltura/config.rb +18 -59
- data/lib/acts_as_kaltura/video.rb +6 -18
- metadata +11 -10
data/lib/acts_as_kaltura.rb
CHANGED
@@ -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 =
|
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 =
|
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
|
-
|
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
|
-
|
16
|
-
|
17
|
-
|
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
|
-
|
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
|
-
|
31
|
+
def overrode_kaltura_client?
|
32
|
+
_kaltura_options.include?(:setting_scope)
|
42
33
|
end
|
43
34
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
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
|
-
|
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 =
|
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
|
-
|
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
|
-
|
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 =
|
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
|
-
|
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.
|
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-
|
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: &
|
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: *
|
25
|
+
version_requirements: *2152378260
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: velir_kaltura-ruby
|
28
|
-
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: *
|
36
|
+
version_requirements: *2152376220
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: activesupport
|
39
|
-
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: *
|
47
|
+
version_requirements: *2152395540
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: activerecord
|
50
|
-
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: *
|
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
|