zencoder 1.0.1

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/.autotest ADDED
@@ -0,0 +1,23 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+
5
+ # Autotest.add_hook :initialize do |at|
6
+ # at.extra_files << "../some/external/dependency.rb"
7
+ #
8
+ # at.libs << ":../some/external"
9
+ #
10
+ # at.add_exception 'vendor'
11
+ #
12
+ # at.add_mapping(/dependency.rb/) do |f, _|
13
+ # at.files_matching(/test_.*rb$/)
14
+ # end
15
+ #
16
+ # %w(TestA TestB).each do |klass|
17
+ # at.extra_class_map[klass] = "test/test_misc.rb"
18
+ # end
19
+ # end
20
+
21
+ # Autotest.add_hook :run_command do |at|
22
+ # system "rake build"
23
+ # end
data/History.txt ADDED
@@ -0,0 +1,8 @@
1
+ === 1.0.0 / 2010-04-29
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
6
+
7
+ === 1.0.1 / 2010-04-29
8
+ * Updated readme
data/Manifest.txt ADDED
@@ -0,0 +1,8 @@
1
+ .autotest
2
+ History.txt
3
+ Manifest.txt
4
+ README.txt
5
+ Rakefile
6
+ bin/zencoder
7
+ lib/zencoder.rb
8
+ test/test_zencoder.rb
data/README.txt ADDED
@@ -0,0 +1,101 @@
1
+ = Zencoder
2
+
3
+ * http://www.bitbucket.org/mml/zencoder
4
+
5
+ == DESCRIPTION:
6
+
7
+ A small library for interacting with Zencoder.com services.
8
+
9
+ See http://www.Zencoder.com for more details.
10
+
11
+ == FEATURES/PROBLEMS:
12
+
13
+ * None yet
14
+
15
+ == SYNOPSIS:
16
+
17
+ Zencoder.submit_job('somebigapikeynumberthing','s3://bucket/path/to/file.mov', ZencoderAPI::Recipes.iphone({:override=>value}))
18
+
19
+ == REQUIREMENTS:
20
+
21
+ * rest-client
22
+
23
+ == INSTALL:
24
+
25
+ * Get your api key from Zencoder.com, and install the gem.
26
+
27
+ == DEVELOPERS:
28
+
29
+ Here's the biggest input i could generate using the awesome Zencoder api builder. Note that it's nonsensical, as
30
+ it turns on both skip audio and skip video flags.
31
+ {
32
+ "test": 1,
33
+ "input": "s3://mybucket/foo",
34
+ "output": [
35
+ {
36
+ "label": "iphone",
37
+ "base_url": "s3://mybucket/",
38
+ "filename": "packet/7/movie.flv",
39
+ "width": 600,
40
+ "height": 300,
41
+ "quality": 3,
42
+ "speed": 3,
43
+ "upscale": 1,
44
+ "stretch": 1,
45
+ "frame_rate": 29.997,
46
+ "max_frame_rate": 30,
47
+ "keyframe_interval": 30,
48
+ "video_bitrate": 500,
49
+ "bitrate_cap": 600,
50
+ "buffer_size": 500,
51
+ "h264_profile": "high",
52
+ "h264_level": 2.2,
53
+ "skip_video": 1,
54
+ "audio_codec": "aac",
55
+ "audio_bitrate": 200,
56
+ "audio_channels": 2,
57
+ "audio_sample_rate": 128,
58
+ "skip_audio": 1,
59
+ "thumbnails": {
60
+ "number": 30,
61
+ "size": "100x100",
62
+ "base_url": "s3://thumbnails",
63
+ "prefix": "fname_prefix"
64
+ },
65
+ "notifications": [
66
+ "http://callback",
67
+ "m@loonsoft.com"
68
+ ],
69
+ "start_clip": 20,
70
+ "clip_length": 30
71
+ }
72
+ ],
73
+ "api_key": "your apikey"
74
+ }
75
+
76
+
77
+
78
+ == LICENSE:
79
+
80
+ (The MIT License)
81
+
82
+ Copyright (c) 2010 McClain Looney
83
+
84
+ Permission is hereby granted, free of charge, to any person obtaining
85
+ a copy of this software and associated documentation files (the
86
+ 'Software'), to deal in the Software without restriction, including
87
+ without limitation the rights to use, copy, modify, merge, publish,
88
+ distribute, sublicense, and/or sell copies of the Software, and to
89
+ permit persons to whom the Software is furnished to do so, subject to
90
+ the following conditions:
91
+
92
+ The above copyright notice and this permission notice shall be
93
+ included in all copies or substantial portions of the Software.
94
+
95
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
96
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
97
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
98
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
99
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
100
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
101
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ # -*- ruby -*-
2
+
3
+
4
+ require 'rake/clean'
5
+ require 'rubygems'
6
+ require 'hoe'
7
+
8
+ Hoe.plugins.delete :rubyforge
9
+
10
+ Hoe.spec 'zencoder' do
11
+ developer('McClain Looney', 'm@loonsoft.com')
12
+ extra_deps << %w(rest-client >=1.2.0)
13
+ extra_dev_deps << %w(shoulda >=2.10.0)
14
+ end
15
+
16
+ # vim: syntax=ruby
data/bin/zencoder ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ abort "you need to write me"
data/lib/zencoder.rb ADDED
@@ -0,0 +1,31 @@
1
+ require 'rubygems'
2
+ require 'rest_client'
3
+ require 'json'
4
+ require 'recipes'
5
+ # A simple interface for dealing with the zencoder api. Currently just submits jobs. More features to come some day.
6
+ #
7
+ # Example:
8
+ #
9
+ # Zencoder.submit_job('somebigapikeynumberthing','s3://bucket/path/to/file.mov', ZencoderAPI::Recipes.iphone({:override=>value}))
10
+ class Zencoder
11
+ include ZencoderAPI
12
+
13
+ # Currently https://app.zencoder.com/api This means you have to have ssl built into your ruby!
14
+ API_URL = 'https://app.zencoder.com/api'
15
+
16
+ VERSION = '1.0.1' #:nodoc:
17
+ # Submits a job to zencoder.
18
+ # The recipe should be an instance or array of instances of ZencoderAPI::Recipe
19
+ # Exceptions are not handled, but rather propagated upwards.
20
+ #
21
+ # If a block is provided, it is yielded the job configuration as a hash.
22
+ class <<self
23
+ def submit_job(apikey, src, *recipes)
24
+ jorb = {:api_key=>apikey, :input => src, :output=>[recipes].flatten}
25
+ yield jorb if block_given?
26
+ RestClient.post(API_URL+'/jobs', jorb.to_json, {:content_type=>:json, :accept=>:json})
27
+
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,65 @@
1
+ require 'rubygems'
2
+ require "test/unit"
3
+ require "zencoder"
4
+ require 'shoulda'
5
+ require 'mocha'
6
+ require 'ruby-debug'
7
+
8
+ class TestZencoder < Test::Unit::TestCase
9
+
10
+ context "the zn lib" do
11
+ setup do
12
+ @src='s3://gkt_sophia_development/spark.avi'
13
+ @api = 'https://app.zencoder.com'
14
+ @apikey = ENV['ZC_APIKEY']
15
+ @base_url = 's3://gkt_sophia_development/zencoder_asset'
16
+ @recipe = ZencoderAPI::Recipes.iphone('base_url' =>@base_url)
17
+ @recipe2 = ZencoderAPI::Recipes.web('base_url' =>@base_url)
18
+ assert_not_nil @apikey, "export ZC_APIKEY before you run the tests"
19
+ end
20
+ context "posting a new job" do
21
+ setup do
22
+ end
23
+ should "be able to submit a job" do
24
+ RestClient.expects(:post).with(kind_of(String), kind_of(String), kind_of(Hash)){|x,y,z|
25
+ assert_equal x, 'https://app.zencoder.com/api/jobs'
26
+ body = JSON.parse(y)
27
+ assert_equal body['input'], @src
28
+ assert_equal body['output'][0]['base_url'], @base_url
29
+ assert_equal body['output'][1]['base_url'], @base_url
30
+ assert_equal body['output'][1]['label'], 'web'
31
+ assert_equal body['output'][0]['label'], 'iphone'
32
+ assert_equal body['api_key'], @apikey
33
+ assert_equal z[:content_type], :json
34
+ assert_equal z[:accept], :json
35
+ true
36
+ }
37
+ Zencoder.submit_job(@apikey, @src, [@recipe, @recipe2])
38
+ end
39
+ should "be able to muck the config " do
40
+ RestClient.expects(:post).with(kind_of(String), kind_of(String), kind_of(Hash)){|x,y,z|
41
+ body = JSON.parse(y)
42
+ assert_equal body['foo'],'bar'
43
+ true
44
+ }
45
+ Zencoder.submit_job(@apikey, @src, @recipe) do |config|
46
+ config[:foo]='bar'
47
+ end
48
+ end
49
+ should "be able to submit a job with 1 recipe" do
50
+ RestClient.expects(:post).with(kind_of(String), kind_of(String), kind_of(Hash)){|x,y,z|
51
+ assert_equal x, 'https://app.zencoder.com/api/jobs'
52
+ body = JSON.parse(y)
53
+ assert_equal body['input'], @src
54
+ assert_equal body['output'][0]['base_url'], @base_url
55
+ assert_equal body['output'][0]['label'], 'iphone'
56
+ assert_equal body['api_key'], @apikey
57
+ assert_equal z[:content_type], :json
58
+ assert_equal z[:accept], :json
59
+ true
60
+ }
61
+ Zencoder.submit_job(@apikey, @src, @recipe)
62
+ end
63
+ end
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zencoder
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 1
9
+ version: 1.0.1
10
+ platform: ruby
11
+ authors:
12
+ - McClain Looney
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-04-29 00:00:00 -05:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rest-client
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 0
31
+ version: 1.2.0
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: gemcutter
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 5
44
+ - 0
45
+ version: 0.5.0
46
+ type: :development
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: shoulda
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 2
57
+ - 10
58
+ - 0
59
+ version: 2.10.0
60
+ type: :development
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: hoe
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 2
71
+ - 5
72
+ - 0
73
+ version: 2.5.0
74
+ type: :development
75
+ version_requirements: *id004
76
+ description: |-
77
+ A small library for interacting with Zencoder.com services.
78
+
79
+ See http://www.Zencoder.com for more details.
80
+ email:
81
+ - m@loonsoft.com
82
+ executables:
83
+ - zencoder
84
+ extensions: []
85
+
86
+ extra_rdoc_files:
87
+ - History.txt
88
+ - Manifest.txt
89
+ - README.txt
90
+ files:
91
+ - .autotest
92
+ - History.txt
93
+ - Manifest.txt
94
+ - README.txt
95
+ - Rakefile
96
+ - bin/zencoder
97
+ - lib/zencoder.rb
98
+ - test/test_zencoder.rb
99
+ has_rdoc: true
100
+ homepage: http://www.bitbucket.org/mml/zencoder
101
+ licenses: []
102
+
103
+ post_install_message:
104
+ rdoc_options:
105
+ - --main
106
+ - README.txt
107
+ require_paths:
108
+ - lib
109
+ required_ruby_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ requirements: []
124
+
125
+ rubyforge_project: zencoder
126
+ rubygems_version: 1.3.6
127
+ signing_key:
128
+ specification_version: 3
129
+ summary: A small library for interacting with Zencoder.com services
130
+ test_files:
131
+ - test/test_zencoder.rb