The gem for interacting with the API on FlixCloud.
See http://flixcloud.com/api for more details on the API.
If you're using rails, you can add the following to your environment.rb:
config.gem 'flixcloud-flix_cloud-gem', :lib => 'flix_cloud', :source => 'http://gems.github.com'
config.gem 'sevenwire-http_client', :lib => 'http_client', :source => 'http://gems.github.com'
config.gem 'crack'
Then you can run:
rake gems:install
rake gems:unpack
Install the gems (sudo may be necessary):
gem install flixcloud-flix_cloud-gem --source http://gems.github.com
gem install sevenwire-http_client --source http://gems.github.com
gem install crack
Then in your code you can just require the FlixCloud gem:
require 'rubygems'
require 'flix_cloud'
You can create jobs using the Job class:
job = FlixCloud::Job.new(:api_key => 'your-api-key-here',
:recipe_id => 1,
:input_url => 'http://url/to/your/input/file',
:output_url => 'ftp://url/to/your/output/file',
:output_user => 'username-for-ftp-here',
:output_password => 'password-for-ftp-here',
:watermark_url => 's3://url/to/your/watermark/file',
:thumbnails_url => 's3://url/to/your/thumbnail-out-file')
job.valid? # true or false
job.save # true or false
job.id # returns the id of the saved job, or nil if it failed to save
job.initialized_at # returns the time the job was created, or nil if it failed to save
Job is modeled after ActiveRecord, so create, create!, save, save!, etc all work.
See this for more information.
When you receive a notification from FlixCloud, you can process it using the Notification class:
job = FlixCloud::Notification.new(notification_xml_or_hash)
job.successful? # true if the state is 'successful_job', false if not
job.failed? # true if the state is 'failed_job', false if not
job.cancelled? # true if the state is 'cancelled_job', false if not
job.id # the id of the job that finished
job.finished_job_at # the time the job finished at
job.initialized_job_at # the time the job was created at
job.recipe_name # the name of the recipe used to process the job
job.recipe_id # the id of the recipe used to process the job
job.state # the state of the finished job. 'successful_job', 'failed_job', or 'cancelled_job'
job.error_message # the error message given for the job if it failed to process
job.input_media_file.url # url of the input file
job.input_media_file.width # width of the input file in pixels
job.input_media_file.height # height of the input file in pixels
job.input_media_file.size # size of the input file in bytes
job.input_media_file.duration # duration of the input file in milliseconds
job.input_media_file.cost # cost of the input file in millicents (1/1000th of a cent)
job.output_media_file.url # url of the output file
job.output_media_file.width # width of the output file in pixels
job.output_media_file.height # height of the output file in pixels
job.output_media_file.size # size of the output file in bytes
job.output_media_file.duration # duration of the output file in milliseconds
job.output_media_file.cost # cost of the output file in millicents (1/1000th of a cent)
job.watermark_file.url # url of the watermark file
job.watermark_file.size # size of the watermark file in bytes
job.watermark_file.cost # cost of the watermark file in millicents (1/1000th of a cent)
See this for more information.
Creating jobs sends HTTP requests to FlixCloud, which may take some time. It's best to do this asynchronously in your application.
Copyright (c) 2009 Zencoder. See LICENSE for details.