zencoder 1.0.4 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -19,3 +19,7 @@
19
19
  === 1.0.4 / 2010-05-03
20
20
 
21
21
  * Jobid hash now returned from the rest request to the api. Useful for receiving callbacks & such
22
+
23
+ === 1.0.5 / 2010-05-20
24
+
25
+ * Pulled some recipes contributed by Brian Maddy
data/Rakefile CHANGED
@@ -4,7 +4,7 @@
4
4
  require 'rake/clean'
5
5
  require 'rubygems'
6
6
  require 'hoe'
7
-
7
+ CLEAN.include %w(**/*.orig)
8
8
  Hoe.plugins.delete :rubyforge
9
9
  Hoe.plugin :hg
10
10
 
data/lib/recipes.rb CHANGED
@@ -4,7 +4,7 @@ module ZencoderAPI #:nodoc:
4
4
 
5
5
  # This class implements a couple of bogus recipes, mainly as an example of usage. Recipe isntances can be passed in to Zencoder#submit_job
6
6
  class Recipe
7
- @@keys = [:label, :base_url, :filename, :width, :height, :quality, :speed,
7
+ @@keys = [:label, :base_url, :filename, :width, :height, :size, :quality, :speed,
8
8
  :upscale, :stretch, :frame_rate, :max_frame_rate, :keyframe_interval,
9
9
  :video_bitrate, :bitrate_cap, :buffer_size, :h264_profile, :h264_level,
10
10
  :skip_video, :audio_codec, :audio_bitrate, :audio_channels, :audio_sample_rate,
@@ -22,11 +22,14 @@ module ZencoderAPI #:nodoc:
22
22
  raise RecipeError.new("no recipe parameters?") if params.empty?
23
23
  raise RecipeError.new("unknown recipe parameter #{params.keys - @@keys}") unless (params.keys - @@keys).empty?
24
24
  if params[:thumbnails]
25
- raise RecipeError.new("unknown thumb keys #{params[:thumbnails].keys - @@thumb_keys}") if (params[:thumbnails].keys - @@thumb_keys).empty?
25
+ raise RecipeError.new("unknown thumb keys #{params[:thumbnails].keys - @@thumb_keys}") unless (params[:thumbnails].keys - @@thumb_keys).empty?
26
26
  end
27
27
  @o = params
28
28
  end
29
29
 
30
+ def to_hash
31
+ @o
32
+ end
30
33
 
31
34
  def to_json(*arg) #:nodoc:
32
35
  @o.to_json(*arg)
@@ -43,7 +46,7 @@ module ZencoderAPI #:nodoc:
43
46
  raise "Base_url unset." unless params['base_url']
44
47
  defaults = {
45
48
  "label"=> "iphone",
46
- "width"=> 240,
49
+ "size"=> "480x320",
47
50
  "frame_rate"=> 24,
48
51
  "max_frame_rate"=> 24,
49
52
  "video_bitrate"=> 40,
data/lib/zencoder.rb CHANGED
@@ -13,7 +13,7 @@ class Zencoder
13
13
  # Currently https://app.zencoder.com/api This means you have to have ssl built into your ruby!
14
14
  API_URL = 'https://app.zencoder.com/api'
15
15
 
16
- VERSION = '1.0.4' #:nodoc:
16
+ VERSION = '1.0.5' #:nodoc:
17
17
  # Submits a job to zencoder.
18
18
  # The recipe should be an instance or array of instances of ZencoderAPI::Recipe
19
19
  # Exceptions are not handled, but rather propagated upwards.
@@ -21,7 +21,7 @@ class Zencoder
21
21
  # If a block is provided, it is yielded the job configuration as a hash.
22
22
  class <<self
23
23
  def submit_job(apikey, src, *recipes)
24
- jorb = {:api_key=>apikey, :input => src, :output=>[recipes].flatten}
24
+ jorb = {:api_key=>apikey, :input => src, :output=>[recipes].flatten.map(&:to_hash)}
25
25
  yield jorb if block_given?
26
26
  JSON.parse(RestClient.post(API_URL+'/jobs', jorb.to_json, {:content_type=>:json, :accept=>:json}))
27
27
  end
@@ -14,16 +14,21 @@ class TestZencoder < Test::Unit::TestCase
14
14
  @apikey = ENV['ZC_APIKEY']
15
15
  @base_url = 's3://test_development/zencoder_asset'
16
16
  @recipe = ZencoderAPI::Recipes.iphone('base_url' =>@base_url)
17
- @recipe2 = ZencoderAPI::Recipes.web('base_url' =>@base_url)
17
+ @recipe2 = ZencoderAPI::Recipes.web('base_url' =>@base_url,
18
+ :thumbnails => {
19
+ :number => 1,
20
+ :size => "75x75"})
18
21
  assert_not_nil @apikey, "export ZC_APIKEY before you run the tests"
19
22
  end
20
23
  context "posting a new job" do
21
-
22
- should "return jobid" do
23
- resp =<<-EOS
24
+ setup do
25
+ @resp =<<-EOS
24
26
  {"id":36119,"outputs":[{"url":"s3://test_development/zencoder_asset/cf398a309f648f99c41a2c0573f40baf.mp4","label":"iphone","id":36174},{"url":"s3://test_development/zencoder_asset/253fae410b1262ef3a76296cbfdb8b44.mp4","label":"web","id":36175}]}
25
27
  EOS
26
- RestClient.expects(:post).returns(resp)
28
+ end
29
+
30
+ should "return jobid" do
31
+ RestClient.expects(:post).returns(@resp)
27
32
  h = Zencoder.submit_job(@apikey, @src, [@recipe, @recipe2])
28
33
  assert_equal Hash, h.class
29
34
  end
@@ -41,7 +46,7 @@ class TestZencoder < Test::Unit::TestCase
41
46
  assert_equal z[:content_type], :json
42
47
  assert_equal z[:accept], :json
43
48
  true
44
- }
49
+ }.returns(@resp)
45
50
  Zencoder.submit_job(@apikey, @src, [@recipe, @recipe2])
46
51
  end
47
52
  should "be able to muck the config " do
@@ -49,9 +54,10 @@ class TestZencoder < Test::Unit::TestCase
49
54
  body = JSON.parse(y)
50
55
  assert_equal body['foo'],'bar'
51
56
  true
52
- }
57
+ }.returns(@resp)
53
58
  Zencoder.submit_job(@apikey, @src, @recipe) do |config|
54
59
  config[:foo]='bar'
60
+ assert config[:output].first.is_a? Hash
55
61
  end
56
62
  end
57
63
  should "be able to submit a job with 1 recipe" do
@@ -65,9 +71,17 @@ class TestZencoder < Test::Unit::TestCase
65
71
  assert_equal z[:content_type], :json
66
72
  assert_equal z[:accept], :json
67
73
  true
68
- }
74
+ }.returns(@resp)
69
75
  Zencoder.submit_job(@apikey, @src, @recipe)
70
76
  end
71
77
  end
78
+ should "raise error when given bad data" do
79
+ assert_raise ZencoderAPI::RecipeError do
80
+ ZencoderAPI::Recipes.web('base_url' =>@base_url, :bad_key => 'wtf?')
81
+ end
82
+ assert_raise ZencoderAPI::RecipeError do
83
+ ZencoderAPI::Recipes.web('base_url' =>@base_url, :thumbnails => {:bad_key => 'wtf?'})
84
+ end
85
+ end
72
86
  end
73
87
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 4
9
- version: 1.0.4
8
+ - 5
9
+ version: 1.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - McClain Looney
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-03 00:00:00 -05:00
17
+ date: 2010-05-20 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency