lib/kaltura_fu/entry.rb in kaltura_fu-0.1.5 vs lib/kaltura_fu/entry.rb in kaltura_fu-0.2.0

- old
+ new

@@ -1,14 +1,105 @@ module KalturaFu - module Entry + + ## + # The entry module provides a slightly more intuitive interface to the + # Kaltura media service. It determines what retrieval and setting actions + # you can perform based upon the version of the Kaltura-Ruby library using + # reflection. This allows Kaltura_Fu to be a bit more future proof than the + # Kaltura API client itself! The tradeoff is that getting/adding/setting + # attributes are defined dynamically. The current behavior is that the first + # call to a dynamic method will then define all of Kaltura's media entries + # methods. This allows the module to be slightly lighter weight in the event + # that it is included in a class but never used, and faster than using method_missing + # lookups for 100% of the dynamic methods. The first call will be slower though, + # as it generates numerous other methods. + # + # == Usage + # The entry module is intended to be used to link Rails Models to Kaltura MediaEntry's. + # However, you should not perform these actions during a web application request. Doing + # so will slow down your request unecessarily. There is nearly nothing gained from adding a + # round trip to your Kaltura server to make an update synchronus. Instead, this module + # should mostly be used in processing a background request from an observer. + # + # == Uploading to Kaltura + # The entry module provides convienance to uploading directly to your installation of + # Kaltura. For your web application, there are two Kaltura flash widgets that perform + # a much better job of uploading files though. This functionality has been used in + # production environments that use lecture capture. A video file is placed in a folder, + # a script picks the file up, and then uploads it into Kaltura. + # + # The Kaltura API supports uploading media from files, URL's, and also has a batch action. + # The implementation of Kaltura Fu currently ignores the URL and batch methods, instead + # focusing on file uploading. + # + # @example A basic file upload example: + # media_file = File.new("/path/to/video.mp4") + # upload(media_file,:source => :file) + # + # @example A file upload with metadata fields populated: + # media_file = File.new("/path/to/video.mp4") + # upload(media_file, :source => :file, + # :name => "My Rad video", + # :description => "I'm capable of such rad things.", + # :tags => "rad,rowdy,video,h.264", + # :categories => "raditude" + # ) + # == Getting, Setting, and Adding Metadata + # The entry module provides an easy mean to retrieve the current state and modify a Kaltura entry. + # For metadata fields that act as a list of objects, it also provides an easy way to append values + # onto the list. It uses get_ and set_ instead of the more common Ruby practice of using just the + # attribute and attribute= so that you can include this module in your model without conflict. Also, + # when you are performing actions on the category fields, the module is making sure these are available + # in the KMC by calling Kaltura's Category service. + # + # @example Retrieving metadata: + # get_name("1_q34aa52a") + # get_categories("1_q34aa52a") + # + # @example Setting metadata: + # set_name("1_q34aa52a", "waffles") + # set_categories("1_q34aa52a", "HD,h.264,live recording") + # + # @example Appending tags to an existing set: + # add_tags("1_q34aa52a","eductation, lecture capture") + # + # == Checking the Status of an Entry + # One unfortunate aspect of the Kaltura API is that an entry will report it's status as "ready" + # while flavors are still encoding. When you embed the entry on a webpage, it will render an + # error "Media is currently converting". The only solution is to instead check the status of + # each flavor instead to ensure total readiness. + # + # @example Checking an entries status: + # check_status("1_q34aa52a") + # + # == Retrieving Status About the Source Video + # Occasionally, you need to interact with the original video in some form or another with Kaltura. + # One production situation I have encountered in the past is maintaining a copy of the source video + # on a large data store seperate from Kaltura. It is extremely difficult to work with the download + # URL that Kaltura provides for that. + # + # @example Getting the Flavor ID of the original video associated with an entry: + # original_flavor("1_q34aa52a") + # + # @example Getting the file extension of the original video associated with an entry: + # original_file_extension("1_q34aa52a") + # + # @example Getting a usable download URL for the entries original file: + # original_download_url("1_q34aa52a") + # + # @author Patrick Robertson + ## + module Entry + ## # @private ## def self.included(base) base.extend ClassMethods base.class_eval do include Metadata include InstanceMethods + include Flavor end super end end #Entry \ No newline at end of file