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.

Author:

Defined Under Namespace

Modules: ClassAndInstanceMethods, ClassMethods

Class Method Summary (collapse)

Instance Method Summary (collapse)

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

- (Object) method_missing(name, *args)



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

+ (Object) included(base)



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

- (String) add_attribute(attr_name, entry_id, value)

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.

Raises:

  • (Kaltura::APIError)

    Passes Kaltura API errors directly through.



142
143
144
145
146
147
148
149
150
151
152
# File 'lib/kaltura_fu/entry/metadata.rb', line 142

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

- (Object) add_categories_to_kaltura(categories)



99
100
101
102
103
104
105
106
107
108
109
# File 'lib/kaltura_fu/entry/metadata.rb', line 99

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

- (Boolean) category_exists?(category_name)



114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/kaltura_fu/entry/metadata.rb', line 114

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

- (Kaltura::MediaEntry) get_entry(entry_id)

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

- (Boolean) respond_to?(method)



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

- (String) set_attribute(attr_name, entry_id, value)

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.

Raises:

  • (Kaltura::APIError)

    Passes Kaltura API errors directly through.



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