animoto 1.5.1 → 1.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/animoto.rb CHANGED
@@ -6,6 +6,6 @@ module Animoto
6
6
  #
7
7
  # @return [String]
8
8
  def self.version
9
- "1.5.1"
9
+ "1.5.2"
10
10
  end
11
11
  end
@@ -19,6 +19,10 @@ module Animoto
19
19
  # @return [String]
20
20
  attr_accessor :pacing
21
21
 
22
+ # The maximum duration in seconds. Optional.
23
+ # #return [String]
24
+ attr_accessor :max_duration
25
+
22
26
  # The array of visual objects in this manifest.
23
27
  # @return [Array<Assets::Base,Assets::TitleCard>]
24
28
  attr_reader :visuals
@@ -50,6 +54,7 @@ module Animoto
50
54
  super
51
55
  @title = options[:title]
52
56
  @pacing = options[:pacing] || 'auto'
57
+ @max_duration = options[:max_duration]
53
58
  @style = options[:style] || Animoto::Styles::ANIMOTO_ORIGINAL
54
59
  @postroll = Animoto::Postroll.new(options[:postroll] || Animoto::Postroll::POWERED_BY_ANIMOTO)
55
60
  @visuals = []
@@ -143,6 +148,7 @@ module Animoto
143
148
  manifest = job['directing_manifest']
144
149
  manifest['style'] = style
145
150
  manifest['pacing'] = pacing if pacing
151
+ manifest['fitting'] = {'type' => 'best_fit', 'max_duration' => @max_duration} if @max_duration
146
152
  manifest['postroll'] = postroll.to_hash if postroll
147
153
  manifest['title'] = title if title
148
154
  manifest['visuals'] = []
@@ -26,7 +26,7 @@ module Animoto
26
26
  # @return [Manifests::DirectingAndRendering] the manifest
27
27
  def initialize options = {}
28
28
  super
29
- @directing_manifest = Manifests::Directing.new(options.only(:title, :pacing))
29
+ @directing_manifest = Manifests::Directing.new(options.only(:title, :pacing, :max_duration))
30
30
  @rendering_manifest = Manifests::Rendering.new(options.only(:resolution, :framerate, :format))
31
31
  end
32
32
 
@@ -62,4 +62,4 @@ module Animoto
62
62
 
63
63
  end
64
64
  end
65
- end
65
+ end
@@ -2,7 +2,7 @@ module Animoto
2
2
  module Support
3
3
  module StandardEnvelope
4
4
 
5
- # When included into a class, also extends ClassMethods, inludes InstanceMethods, and
5
+ # When included into a class, also extends ClassMethods, includes InstanceMethods, and
6
6
  # includes Support::ContentType
7
7
  #
8
8
  # @param [Module] base the module this is being included into
@@ -115,4 +115,4 @@ module Animoto
115
115
  end
116
116
  end
117
117
  end
118
- end
118
+ end
@@ -98,7 +98,36 @@ describe Animoto::Manifests::DirectingAndRendering do
98
98
  @hash.should have_key('song')
99
99
  @hash['song'].should be_a(Hash)
100
100
  end
101
-
101
+
102
+ it "should not have a 'fitting' hash in the manifest" do
103
+ @hash.should_not have_key('fitting')
104
+ end
105
+
106
+ describe "with a 'max_duration' option" do
107
+ before do
108
+ opts = {:title => 'Funderful Wonderment', :pacing => 'double', :resolution => "720p",
109
+ :framerate => 24, :format => 'flv', :max_duration => '30'}
110
+ @mfest = Animoto::Manifests::DirectingAndRendering.new(opts)
111
+ @title_card = @mfest.add_title_card 'woohoo', 'this is awesome'
112
+ @song_obj = @mfest.add_song 'http://website.com/song.mp3'
113
+ @hash = @mfest.to_hash['directing_and_rendering_job']['directing_manifest']
114
+ end
115
+
116
+ it "should have a 'fitting' hash in the manifest" do
117
+ @hash.should have_key('fitting')
118
+ end
119
+
120
+ it "should specify a max duration in the manifest" do
121
+ @hash['fitting'].should have_key('max_duration')
122
+ @hash['fitting']['max_duration'].should == '30'
123
+ end
124
+
125
+ it "should specify a type in the manifest" do
126
+ @hash['fitting'].should have_key('type')
127
+ @hash['fitting']['type'].should == 'best_fit'
128
+ end
129
+ end
130
+
102
131
  describe "visuals array" do
103
132
  before do
104
133
  @visuals = @hash['visuals']
@@ -180,4 +209,4 @@ describe Animoto::Manifests::DirectingAndRendering do
180
209
  end
181
210
  end
182
211
  end
183
- end
212
+ end
@@ -19,6 +19,10 @@ describe Animoto::Manifests::Directing do
19
19
  manifest(:pacing => 'fast').pacing.should == 'fast'
20
20
  end
21
21
 
22
+ it "should be able to specify the max_duration with a :max_duration parameter" do
23
+ manifest(:max_duration => '30').max_duration.should == '30'
24
+ end
25
+
22
26
  it "should default to 'original' style" do
23
27
  manifest.style.should == Animoto::Styles::ANIMOTO_ORIGINAL
24
28
  end
@@ -151,6 +155,33 @@ describe Animoto::Manifests::Directing do
151
155
  manifest.to_hash['directing_job']['directing_manifest']['pacing'].should == manifest.pacing
152
156
  end
153
157
 
158
+ it "should not have a 'fitting' key in the manifest" do
159
+ manifest.to_hash['directing_job']['directing_manifest'].should_not have_key('fitting')
160
+ end
161
+
162
+ describe "with a max_duration option" do
163
+ before do
164
+ opts = {:title => 'Funderful Wonderment', :pacing => 'double', :max_duration => '30'}
165
+ @mfest = Animoto::Manifests::Directing.new(opts)
166
+ @title_card = @mfest.add_title_card 'woohoo', 'this is awesome'
167
+ @song_obj = @mfest.add_song 'http://website.com/song.mp3'
168
+ end
169
+
170
+ it "should have a 'fitting' key in the manifest" do
171
+ @mfest.to_hash['directing_job']['directing_manifest'].should have_key('fitting')
172
+ end
173
+
174
+ it "should have a 'max_duration' key in the manifest" do
175
+ @mfest.to_hash['directing_job']['directing_manifest']['fitting'].should have_key('max_duration')
176
+ @mfest.to_hash['directing_job']['directing_manifest']['fitting']['max_duration'].should == @mfest.max_duration
177
+ end
178
+
179
+ it "should have a 'type' key in the manifest" do
180
+ @mfest.to_hash['directing_job']['directing_manifest']['fitting'].should have_key('type')
181
+ @mfest.to_hash['directing_job']['directing_manifest']['fitting']['type'].should == 'best_fit'
182
+ end
183
+ end
184
+
154
185
  it "should have a 'visuals' key in the manifest" do
155
186
  manifest.to_hash['directing_job']['directing_manifest'].should have_key('visuals')
156
187
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: animoto
3
3
  version: !ruby/object:Gem::Version
4
- hash: 1
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 5
9
- - 1
10
- version: 1.5.1
9
+ - 2
10
+ version: 1.5.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Animoto
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-01 00:00:00 Z
18
+ date: 2012-04-09 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  requirements: []
140
140
 
141
141
  rubyforge_project:
142
- rubygems_version: 1.8.12
142
+ rubygems_version: 1.8.17
143
143
  signing_key:
144
144
  specification_version: 3
145
145
  summary: Client for working with the Animoto RESTful HTTP API