encoding-dot-com 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/encoding-dot-com.gemspec +5 -2
- data/lib/encoding-dot-com.rb +1 -0
- data/lib/encoding_dot_com/format.rb +2 -0
- data/lib/encoding_dot_com/image_format.rb +37 -0
- data/spec/flv_vp6_format_spec.rb +6 -10
- data/spec/format_spec.rb +9 -1
- data/spec/image_format_spec.rb +71 -0
- metadata +5 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/encoding-dot-com.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{encoding-dot-com}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Roland Swingler", "Alan Kennedy", "Levent Ali"]
|
12
|
-
s.date = %q{2009-12-
|
12
|
+
s.date = %q{2009-12-08}
|
13
13
|
s.description = %q{A ruby wrapper for the encoding.com API}
|
14
14
|
s.email = %q{roland.swingler@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
|
|
32
32
|
"lib/encoding_dot_com/format.rb",
|
33
33
|
"lib/encoding_dot_com/http_adapters/curb_adapter.rb",
|
34
34
|
"lib/encoding_dot_com/http_adapters/net_http_adapter.rb",
|
35
|
+
"lib/encoding_dot_com/image_format.rb",
|
35
36
|
"lib/encoding_dot_com/media_info.rb",
|
36
37
|
"lib/encoding_dot_com/media_list_item.rb",
|
37
38
|
"lib/encoding_dot_com/queue.rb",
|
@@ -41,6 +42,7 @@ Gem::Specification.new do |s|
|
|
41
42
|
"spec/encoding_dot_com/http_adapters/net_http_adapter_spec.rb",
|
42
43
|
"spec/flv_vp6_format_spec.rb",
|
43
44
|
"spec/format_spec.rb",
|
45
|
+
"spec/image_format_spec.rb",
|
44
46
|
"spec/media_list_item_spec.rb",
|
45
47
|
"spec/queue_spec.rb",
|
46
48
|
"spec/spec_helper.rb",
|
@@ -54,6 +56,7 @@ Gem::Specification.new do |s|
|
|
54
56
|
s.test_files = [
|
55
57
|
"spec/flv_vp6_format_spec.rb",
|
56
58
|
"spec/spec_helper.rb",
|
59
|
+
"spec/image_format_spec.rb",
|
57
60
|
"spec/encoding_dot_com/http_adapters/net_http_adapter_spec.rb",
|
58
61
|
"spec/encoding_dot_com/http_adapters/curb_adapter_spec.rb",
|
59
62
|
"spec/format_spec.rb",
|
data/lib/encoding-dot-com.rb
CHANGED
@@ -4,6 +4,7 @@ require 'encoding_dot_com/attribute_restrictions'
|
|
4
4
|
require 'encoding_dot_com/format'
|
5
5
|
require 'encoding_dot_com/video_format'
|
6
6
|
require 'encoding_dot_com/thumbnail_format'
|
7
|
+
require 'encoding_dot_com/image_format'
|
7
8
|
require 'encoding_dot_com/flv_vp6_format'
|
8
9
|
require 'encoding_dot_com/media_list_item'
|
9
10
|
require 'encoding_dot_com/media_info'
|
@@ -12,6 +12,8 @@ module EncodingDotCom
|
|
12
12
|
ThumbnailFormat.new(attributes)
|
13
13
|
elsif attributes["output"] == "flv" && attributes["video_codec"] == "vp6"
|
14
14
|
FLVVP6Format.new(attributes)
|
15
|
+
elsif attributes["output"] == "image"
|
16
|
+
ImageFormat.new(attributes)
|
15
17
|
else
|
16
18
|
VideoFormat.new(attributes)
|
17
19
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module EncodingDotCom
|
2
|
+
class ImageFormat < Format
|
3
|
+
allowed_attributes :output, :image_format, :size, :resize_method, :quality
|
4
|
+
boolean_attributes :keep_aspect_ratio
|
5
|
+
|
6
|
+
def initialize(attributes={})
|
7
|
+
@attributes = attributes.merge("output" => "image")
|
8
|
+
validate_attributes
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def validate_attributes
|
14
|
+
validate_image_format
|
15
|
+
validate_resize_method
|
16
|
+
validate_quality
|
17
|
+
end
|
18
|
+
|
19
|
+
def validate_image_format
|
20
|
+
unless image_format.nil? || %w{jpg png gif}.include?(image_format)
|
21
|
+
raise IllegalFormatAttribute.new("image_format should be one of jpg, png or gif.")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def validate_resize_method
|
26
|
+
unless resize_method.nil? || %w{resize crop combine}.include?(resize_method)
|
27
|
+
raise IllegalFormatAttribute.new("resize_method should be one of resize, crop or combine.")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def validate_quality
|
32
|
+
unless quality.nil? || (quality.to_i >= 1 && quality.to_i <= 100)
|
33
|
+
raise IllegalFormatAttribute.new("quality should be between 1 and 100.")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/spec/flv_vp6_format_spec.rb
CHANGED
@@ -5,16 +5,7 @@ describe "Encoding.com FLV VP6 Format" do
|
|
5
5
|
it "should have an output attribute of 'thumbnail'" do
|
6
6
|
EncodingDotCom::FLVVP6Format.new.output.should == "flv"
|
7
7
|
end
|
8
|
-
|
9
|
-
it "should return a ThumbnailFormat if the output is 'thumbnail'" do
|
10
|
-
EncodingDotCom::Format.create("output" => "flv", "video_codec" => "vp6").should be_instance_of(EncodingDotCom::FLVVP6Format)
|
11
|
-
end
|
12
|
-
|
13
|
-
def format_xml(attributes={})
|
14
|
-
format = EncodingDotCom::FLVVP6Format.new(attributes)
|
15
|
-
Nokogiri::XML::Builder.new {|b| format.build_xml(b, "http://example.com") }.to_xml
|
16
|
-
end
|
17
|
-
|
8
|
+
|
18
9
|
it "should produce a format node in the xml output" do
|
19
10
|
format_xml.should have_xpath("/format")
|
20
11
|
end
|
@@ -41,4 +32,9 @@ describe "Encoding.com FLV VP6 Format" do
|
|
41
32
|
lambda { EncodingDotCom::FLVVP6Format.new("size" => "33x33") }.should raise_error(EncodingDotCom::IllegalFormatAttribute)
|
42
33
|
end
|
43
34
|
end
|
35
|
+
|
36
|
+
def format_xml(attributes={})
|
37
|
+
format = EncodingDotCom::FLVVP6Format.new(attributes)
|
38
|
+
Nokogiri::XML::Builder.new {|b| format.build_xml(b, "http://example.com") }.to_xml
|
39
|
+
end
|
44
40
|
end
|
data/spec/format_spec.rb
CHANGED
@@ -3,9 +3,17 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
describe "Encoding.com video format" do
|
4
4
|
|
5
5
|
describe "#create" do
|
6
|
-
it "should return a video
|
6
|
+
it "should return a VideoFormat when the output type is a video output" do
|
7
7
|
EncodingDotCom::Format.create("output" => "mp4").should be_instance_of(EncodingDotCom::VideoFormat)
|
8
8
|
end
|
9
|
+
|
10
|
+
it "should return a FLVVP6Format if the output is flv and the video codec is vp6" do
|
11
|
+
EncodingDotCom::Format.create("output" => "flv", "video_codec" => "vp6").should be_instance_of(EncodingDotCom::FLVVP6Format)
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should return a ImageFormat when the output type is image" do
|
15
|
+
EncodingDotCom::Format.create("output" => "image").should be_instance_of(EncodingDotCom::ImageFormat)
|
16
|
+
end
|
9
17
|
end
|
10
18
|
|
11
19
|
describe "#output" do
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe "Encoding.com Image Format" do
|
4
|
+
|
5
|
+
it "should have an output attribute of 'thumbnail'" do
|
6
|
+
EncodingDotCom::ImageFormat.new.output.should == "image"
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should produce an output node in the xml output" do
|
10
|
+
format_xml.should have_xpath("/format/output[text()='image']")
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should produce an image format node in the xml output" do
|
14
|
+
format_xml("image_format" => "jpg").should have_xpath("/format/image_format[text()='jpg']")
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should produce a size node in the xml output" do
|
18
|
+
format_xml("size" => "10x10").should have_xpath("/format/size[text()='10x10']")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should produce a resize method node in the xml output" do
|
22
|
+
format_xml("resize_method" => "crop").should have_xpath("/format/resize_method[text()='crop']")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should produce a resize method node in the xml output" do
|
26
|
+
format_xml("quality" => "90").should have_xpath("/format/quality[text()='90']")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should produce a keep aspect ratio node in the xml output" do
|
30
|
+
format_xml("keep_aspect_ratio" => true).should have_xpath("/format/keep_aspect_ratio[text()='yes']")
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "valid resize method" do
|
34
|
+
%w{resize crop combine}.each do |method|
|
35
|
+
it "should allow '#{method}'" do
|
36
|
+
lambda { format_xml("resize_method" => method) }.should_not raise_error(EncodingDotCom::IllegalFormatAttribute)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should not allow anything else" do
|
41
|
+
lambda { format_xml("resize_method" => "foo") }.should raise_error(EncodingDotCom::IllegalFormatAttribute)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "valid image format" do
|
46
|
+
%w{jpg png gif}.each do |format|
|
47
|
+
it "should allow '#{format}'" do
|
48
|
+
lambda { format_xml("image_format" => format) }.should_not raise_error(EncodingDotCom::IllegalFormatAttribute)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should not allow anything else" do
|
53
|
+
lambda { format_xml("image_format" => "foo") }.should raise_error(EncodingDotCom::IllegalFormatAttribute)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "valid quality" do
|
58
|
+
it "should be between 1 and 100" do
|
59
|
+
lambda { format_xml("quality" => 0) }.should raise_error(EncodingDotCom::IllegalFormatAttribute)
|
60
|
+
lambda { format_xml("quality" => 101) }.should raise_error(EncodingDotCom::IllegalFormatAttribute)
|
61
|
+
lambda { format_xml("quality" => 1) }.should_not raise_error(EncodingDotCom::IllegalFormatAttribute)
|
62
|
+
lambda { format_xml("quality" => 100) }.should_not raise_error(EncodingDotCom::IllegalFormatAttribute)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def format_xml(attributes={})
|
67
|
+
format = EncodingDotCom::ImageFormat.new(attributes)
|
68
|
+
Nokogiri::XML::Builder.new {|b| format.build_xml(b, "http://example.com") }.to_xml
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: encoding-dot-com
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roland Swingler
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2009-12-
|
14
|
+
date: 2009-12-08 00:00:00 +00:00
|
15
15
|
default_executable:
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
@@ -59,6 +59,7 @@ files:
|
|
59
59
|
- lib/encoding_dot_com/format.rb
|
60
60
|
- lib/encoding_dot_com/http_adapters/curb_adapter.rb
|
61
61
|
- lib/encoding_dot_com/http_adapters/net_http_adapter.rb
|
62
|
+
- lib/encoding_dot_com/image_format.rb
|
62
63
|
- lib/encoding_dot_com/media_info.rb
|
63
64
|
- lib/encoding_dot_com/media_list_item.rb
|
64
65
|
- lib/encoding_dot_com/queue.rb
|
@@ -68,6 +69,7 @@ files:
|
|
68
69
|
- spec/encoding_dot_com/http_adapters/net_http_adapter_spec.rb
|
69
70
|
- spec/flv_vp6_format_spec.rb
|
70
71
|
- spec/format_spec.rb
|
72
|
+
- spec/image_format_spec.rb
|
71
73
|
- spec/media_list_item_spec.rb
|
72
74
|
- spec/queue_spec.rb
|
73
75
|
- spec/spec_helper.rb
|
@@ -103,6 +105,7 @@ summary: A ruby wrapper for the encoding.com API
|
|
103
105
|
test_files:
|
104
106
|
- spec/flv_vp6_format_spec.rb
|
105
107
|
- spec/spec_helper.rb
|
108
|
+
- spec/image_format_spec.rb
|
106
109
|
- spec/encoding_dot_com/http_adapters/net_http_adapter_spec.rb
|
107
110
|
- spec/encoding_dot_com/http_adapters/curb_adapter_spec.rb
|
108
111
|
- spec/format_spec.rb
|