zencoder-flix_cloud-gem 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
- :minor: 1
4
- :patch: 1
3
+ :minor: 2
4
+ :patch: 0
@@ -1,3 +1,5 @@
1
- class FlixCloud::SaveError < Exception; end
2
-
3
- class FlixCloud::CreateError < Exception; end
1
+ class FlixCloud::Error < StandardError; end
2
+ class FlixCloud::SaveError < FlixCloud::Error; end
3
+ class FlixCloud::CreateError < FlixCloud::Error; end
4
+ class FlixCloud::Unauthorized < FlixCloud::Error; end
5
+ class FlixCloud::RequestFailed < FlixCloud::Error; end
@@ -1,6 +1,6 @@
1
1
  class FlixCloud::Job < FlixCloud::Record
2
2
 
3
- attr_accessor :id, :initialized_at, :api_key, :recipe_id, :response
3
+ attr_accessor :id, :initialized_at, :api_key, :recipe_id, :recipe_name, :response
4
4
 
5
5
  record_column :file_locations, 'FileLocations'
6
6
 
@@ -20,8 +20,12 @@ class FlixCloud::Job < FlixCloud::Record
20
20
  self.errors << "file_locations is required"
21
21
  end
22
22
 
23
- unless recipe_id
24
- self.errors << "recipe_id is required"
23
+ if recipe_id || recipe_name
24
+ if recipe_id && recipe_name
25
+ self.errors << "recipe_id and recipe_name cannot both be used"
26
+ end
27
+ else
28
+ self.errors << "recipe_id or recipe_name is required"
25
29
  end
26
30
 
27
31
  unless api_key
@@ -34,7 +38,7 @@ class FlixCloud::Job < FlixCloud::Record
34
38
  def save
35
39
  return false unless valid?
36
40
 
37
- self.response = FlixCloud::Response.new(post('jobs', to_xml))
41
+ self.response = post('jobs', to_xml)
38
42
 
39
43
  if response.success?
40
44
  self.id = response.body_as_hash['job']['id']
@@ -70,7 +74,12 @@ class FlixCloud::Job < FlixCloud::Record
70
74
 
71
75
  xml.tag!("api-request") do
72
76
  xml.tag!("api-key", api_key)
73
- xml.tag!("recipe-id", recipe_id)
77
+
78
+ if recipe_name
79
+ xml.tag!("recipe-name", recipe_name)
80
+ else
81
+ xml.tag!("recipe-id", recipe_id)
82
+ end
74
83
 
75
84
  if file_locations
76
85
  xml.tag!("file-locations") do
@@ -30,9 +30,14 @@ class FlixCloud::Record
30
30
  protected
31
31
 
32
32
  def post(path, body)
33
- RestClient::Resource.new(
34
- "https://flixcloud.com/#{path}",
35
- :verify_ssl => OpenSSL::SSL::VERIFY_PEER).post(body, :content_type => 'application/xml', :accept => 'application/xml')
33
+ begin
34
+ FlixCloud::Response.new(RestClient::Resource.new("https://flixcloud.com/#{path}",
35
+ :verify_ssl => OpenSSL::SSL::VERIFY_PEER).post(body, :content_type => 'application/xml', :accept => 'application/xml'))
36
+ rescue RestClient::Unauthorized
37
+ raise FlixCloud::Unauthorized
38
+ rescue RestClient::RequestFailed
39
+ raise FlixCloud::RequestFailed
40
+ end
36
41
  end
37
42
 
38
43
  end
@@ -16,8 +16,20 @@ class FlixCloud::JobTest < Test::Unit::TestCase
16
16
  assert_match /file_locations is required/, @job.errors.to_s
17
17
  end
18
18
 
19
- should "require recipe_id" do
20
- assert_match /recipe_id is required/, @job.errors.to_s
19
+ should "require recipe_id or recipe_name" do
20
+ assert_match /recipe_id or recipe_name is required/, @job.errors.to_s
21
+ end
22
+ end
23
+
24
+
25
+ context "When validating a job object with both recipe_id and recipe_name are set" do
26
+ setup do
27
+ @job = FlixCloud::Job.new(:recipe_name => 'recipe-name', :recipe_id => 1)
28
+ @job.valid?
29
+ end
30
+
31
+ should "require that both recipe_id and recipe_name cannot be used" do
32
+ assert_match /recipe_id and recipe_name cannot both be used/, @job.errors.to_s
21
33
  end
22
34
  end
23
35
 
@@ -97,6 +109,28 @@ class FlixCloud::JobTest < Test::Unit::TestCase
97
109
  end
98
110
 
99
111
 
112
+ context "A job with recipe_id set" do
113
+ setup do
114
+ @job = FlixCloud::Job.new(:recipe_id => 1)
115
+ end
116
+
117
+ should "serialize to xml and include the recipe_id, not the recipe_name" do
118
+ assert_equal %{<?xml version="1.0" encoding="UTF-8"?><api-request><api-key></api-key><recipe-id>1</recipe-id></api-request>}, @job.to_xml
119
+ end
120
+ end
121
+
122
+
123
+ context "A job with a recipe_name set" do
124
+ setup do
125
+ @job = FlixCloud::Job.new(:recipe_name => 'recipe-name')
126
+ end
127
+
128
+ should "serialize to xml and include the recipe_name, not the recipe_id" do
129
+ assert_equal %{<?xml version="1.0" encoding="UTF-8"?><api-request><api-key></api-key><recipe-name>recipe-name</recipe-name></api-request>}, @job.to_xml
130
+ end
131
+ end
132
+
133
+
100
134
  context "A job with all attributes set" do
101
135
  setup do
102
136
  @job = FlixCloud::Job.new(:recipe_id => 1,
@@ -157,12 +191,11 @@ class FlixCloud::JobTest < Test::Unit::TestCase
157
191
 
158
192
  context "when saving with malformed xml (should really never happen, but what if?)" do
159
193
  setup do
160
- FakeWeb.register_uri(:post, 'https://flixcloud.com/jobs', :string => %{<?xml version="1.0" encoding="UTF-8"?><errors><error>Malformed XML received, please check the syntax of your XML</error></errors>},
161
- :status => ['400', 'Bad Request'])
194
+ FakeWeb.register_uri(:post, 'https://flixcloud.com/jobs', :status => ['400', 'Bad Request'])
162
195
  end
163
196
 
164
197
  should "raise a RequestFailed error" do
165
- assert_raises RestClient::RequestFailed do
198
+ assert_raises FlixCloud::RequestFailed do
166
199
  @job.save
167
200
  end
168
201
  end
@@ -171,12 +204,24 @@ class FlixCloud::JobTest < Test::Unit::TestCase
171
204
 
172
205
  context "when saving and the schema doesn't validate (should really never happen, but what if?)" do
173
206
  setup do
174
- FakeWeb.register_uri(:post, 'https://flixcloud.com/jobs', :string => %{<?xml version="1.0" encoding="UTF-8"?><errors><error>You are missing this thing and that thing</error></errors>},
175
- :status => ['400', 'Bad Request'])
207
+ FakeWeb.register_uri(:post, 'https://flixcloud.com/jobs', :status => ['400', 'Bad Request'])
176
208
  end
177
209
 
178
210
  should "raise a RequestFailed error" do
179
- assert_raises RestClient::RequestFailed do
211
+ assert_raises FlixCloud::RequestFailed do
212
+ @job.save
213
+ end
214
+ end
215
+ end
216
+
217
+
218
+ context "when saving and the api-key is not valid" do
219
+ setup do
220
+ FakeWeb.register_uri(:post, 'https://flixcloud.com/jobs', :status => ['401', 'Unauthorized'])
221
+ end
222
+
223
+ should "raise an Unauthorized error" do
224
+ assert_raises FlixCloud::Unauthorized do
180
225
  @job.save
181
226
  end
182
227
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zencoder-flix_cloud-gem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Sutton
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-08 00:00:00 -07:00
12
+ date: 2009-04-09 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency