Skip to content

Instantly share code, notes, and snippets.

@adriand adriand/zencoder.rb
Created Aug 19, 2010

Embed
What would you like to do?
class Zencoder
include HTTParty
headers "Accept" => "application/json", "Content-Type" => "application/json"
base_uri 'https://app.zencoder.com/api'
default_params :api_key => "YOUR-API-KEY-GOES-HERE"
format :json
attr_accessor :job_id
attr_reader :errors
attr_reader :output_url
def initialize(encode_bucket_url = nil, notification_url = nil)
@encode_bucket_url = encode_bucket_url
@notification_url = notification_url
end
# encode a provided input_video at a given width and height, and dump the thumbnail into the thumbnail_destination
# options: e.g. :test => 1
def encode(input_video, width, height, thumbnail_destination, options = {})
raise RuntimeError, "encode_bucket_url and/or notification_url is nil: you must set these to use this method." unless @encode_bucket_url && @notification_url
query = {
:input => input_video,
:public => 1, # when set to 1, the encoded file will be publicly available, i.e. to web visitors
:outputs => {
:base_url => @encode_bucket_url,
:size => "#{width}x#{height}",
:public => 1,
:notifications => [{
:format => "json",
:url => @notification_url
}],
:thumbnails => {
:number => 1,
:base_url => @encode_bucket_url + thumbnail_destination,
:size => "#{width}x#{height}"
}
}
}.merge(options)
job = self.class.post("/jobs", :body => query.to_json)
if job["errors"]
errors = job["errors"]
false
else
@output_url = job["outputs"].first["url"]
@job_id = job["id"]
job
end
end
# get details about a job. You may pass a job_id or if none is provided, this will use @job_id if it is available
def details(job_id = nil)
@job_id ||= job_id
if @job_id
self.class.get("/jobs/#{@job_id}")
else
raise RuntimeError, "@job_id is nil: you must set the job id, pass the job id, or encode a job (which sets it automatically) to use this method."
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.