Module: KalturaFu::Entry::Metadata
- Defined in:
- lib/kaltura_fu/entry/metadata.rb,
lib/kaltura_fu.rb,
lib/kaltura_fu/entry/metadata/class_methods.rb,
lib/kaltura_fu/entry/metadata/class_and_instance_methods.rb
Overview
The Metadata module provides methods that get/set and add metadata to the Kaltura installation.
Defined Under Namespace
Modules: ClassAndInstanceMethods, ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#add_attribute(attr_name, entry_id, value) ⇒ String
Appends a specific Kaltura::MediaEntry attribute to the end of the original attribute given a Kaltura entry.
- #add_categories_to_kaltura(categories) ⇒ Object
- #category_exists?(category_name) ⇒ Boolean
-
#get_entry(entry_id) ⇒ Kaltura::MediaEntry
Gets a Kaltura::MediaEntry given a Kaltura entry.
- #method_missing(name, *args) ⇒ Object
- #respond_to?(method) ⇒ Boolean
-
#set(entry_id, attributes = {}) ⇒ Object
Sets multiple Kaltura::MediaEntry attributes in one convienant method.
-
#set_attribute(attr_name, entry_id, value) ⇒ String
Sets a specific Kaltura::MediaEntry attribute given a Kaltura entry.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 29 def method_missing(name, *args) method_name = name.to_s unless self.class.generated_methods? self.class.define_attribute_methods if self.class.generated_methods.include?(method_name) return self.send(name,*args) else super end else super end end |
Class Method Details
.included(base) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 17 def self.included(base) base.extend ClassAndInstanceMethods base.extend ClassMethods base.class_eval do include ClassAndInstanceMethods end super end |
Instance Method Details
#add_attribute(attr_name, entry_id, value) ⇒ String
Appends a specific Kaltura::MediaEntry attribute to the end of the original attribute given a Kaltura entry. This method is called by method_missing, allowing this module add attributes based off of the current API wrapper, rather than having to update along side the API wrapper.
157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 157 def add_attribute(attr_name,entry_id,value) KalturaFu.check_for_client_session add_categories_to_kaltura(value) if (attr_name =~ /^(.*)_categor(ies|y)/ || attr_name =~ /^categor(ies|y)/) old_attributes = KalturaFu.client.media_service.get(entry_id).send(attr_name.to_sym) media_entry = Kaltura::MediaEntry.new media_entry.send("#{attr_name}=","#{old_attributes},#{value}") KalturaFu.client.media_service.update(entry_id,media_entry).send(attr_name.to_sym) end |
#add_categories_to_kaltura(categories) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 114 def add_categories_to_kaltura(categories) KalturaFu.check_for_client_session categories.split(",").each do |category| unless category_exists?(category) cat = Kaltura::Category.new cat.name = category KalturaFu.client.category_service.add(cat) end end end |
#category_exists?(category_name) ⇒ Boolean
129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 129 def category_exists?(category_name) KalturaFu.check_for_client_session category_filter = Kaltura::Filter::CategoryFilter.new category_filter.full_name_equal = category_name category_check = KalturaFu.client.category_service.list(category_filter).objects if category_check.nil? false else category_check end end |
#get_entry(entry_id) ⇒ Kaltura::MediaEntry
Gets a Kaltura::MediaEntry given a Kaltura entry.
65 66 67 68 69 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 65 def get_entry(entry_id) KalturaFu.check_for_client_session KalturaFu.client.media_service.get(entry_id) end |
#respond_to?(method) ⇒ Boolean
46 47 48 49 50 51 52 53 54 55 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 46 def respond_to?(method) case method.to_s when /^(get|set)_(.*)/ valid_entry_attribute?($2.to_sym) || super when /^(add)_(.*)/ (valid_entry_attribute?($2.pluralize.to_sym) && valid_add_attribute?($2) ) || super else super end end |
#set(entry_id, attributes = {}) ⇒ Object
Sets multiple Kaltura::MediaEntry attributes in one convienant method.
103 104 105 106 107 108 109 110 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 103 def set(entry_id, attributes={}) KalturaFu.check_for_client_session attributes.each do |key,value| attribute = key.to_s set_attribute(attribute,entry_id,value) if valid_entry_attribute?(key) end end |
#set_attribute(attr_name, entry_id, value) ⇒ String
Sets a specific Kaltura::MediaEntry attribute given a Kaltura entry. This method is called by method_missing, allowing this module set attributes based off of the current API wrapper, rather than having to update along side the API wrapper.
85 86 87 88 89 90 91 92 93 94 |
# File 'lib/kaltura_fu/entry/metadata.rb', line 85 def set_attribute(attr_name,entry_id,value) KalturaFu.check_for_client_session add_categories_to_kaltura(value) if (attr_name =~ /^(.*)_categories/ || attr_name =~ /^categories/) media_entry = Kaltura::MediaEntry.new media_entry.send("#{attr_name}=",value) KalturaFu.client.media_service.update(entry_id,media_entry).send(attr_name.to_sym) end |