ungulate 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.10
1
+ 0.0.11
data/lib/ungulate/job.rb CHANGED
@@ -6,7 +6,7 @@ require 'yaml'
6
6
 
7
7
  module Ungulate
8
8
  class Job
9
- attr_accessor :bucket, :key, :queue, :versions
9
+ attr_accessor :bucket, :key, :notification_url, :queue, :versions
10
10
 
11
11
  def self.s3
12
12
  @s3 ||=
@@ -37,6 +37,7 @@ module Ungulate
37
37
  def attributes=(options)
38
38
  self.bucket = Job.s3.bucket(options[:bucket])
39
39
  self.key = options[:key]
40
+ self.notification_url = options[:notification_url]
40
41
  self.versions = options[:versions]
41
42
  end
42
43
 
@@ -79,6 +80,19 @@ module Ungulate
79
80
  )
80
81
  image.destroy!
81
82
  end
83
+ send_notification
84
+ end
85
+
86
+ def send_notification
87
+ return false if notification_url.blank?
88
+
89
+ @logger.info "Sending notification to #{notification_url}"
90
+
91
+ url = URI.parse(notification_url)
92
+
93
+ Net::HTTP.start(url.host) do |http|
94
+ http.put(url.path, nil)
95
+ end
82
96
  end
83
97
 
84
98
  def version_key(version)
@@ -99,7 +99,8 @@ module Ungulate
99
99
  job.attributes = {
100
100
  :bucket => 'hello',
101
101
  :key => 'path/to/filename.gif',
102
- :versions => @versions
102
+ :versions => @versions,
103
+ :notification_url => 'http://some.host/with/simple/path',
103
104
  }
104
105
  job
105
106
  end
@@ -107,6 +108,7 @@ module Ungulate
107
108
  its(:bucket) { should == @bucket }
108
109
  its(:key) { should == 'path/to/filename.gif' }
109
110
  its(:versions) { should == @versions }
111
+ its(:notification_url) { should == 'http://some.host/with/simple/path' }
110
112
  end
111
113
 
112
114
  describe :source do
@@ -175,6 +177,7 @@ module Ungulate
175
177
  job.stub(:bucket).and_return(@bucket)
176
178
  job.stub(:version_key).with(:big).and_return('path/to/someimage_big.jpg')
177
179
  job.stub(:version_key).with(:little).and_return('path/to/someimage_little.jpg')
180
+ job.stub(:send_notification)
178
181
  job
179
182
  end
180
183
 
@@ -203,6 +206,10 @@ module Ungulate
203
206
  expected_headers)
204
207
  end
205
208
 
209
+ it "should notify" do
210
+ subject.should_receive(:send_notification)
211
+ end
212
+
206
213
  context "empty array" do
207
214
  before do
208
215
  subject.stub(:processed_versions).and_return([])
@@ -213,6 +220,32 @@ module Ungulate
213
220
  end
214
221
  end
215
222
 
223
+ describe :send_notification do
224
+ after { subject.send_notification }
225
+
226
+ context "notification URL provided" do
227
+ before do
228
+ subject.stub(:notification_url).and_return('http://some.host/processing_images/some/path')
229
+ end
230
+
231
+ it "should PUT to the URL" do
232
+ http = mock('Net::HTTP')
233
+ Net::HTTP.stub(:start).with('some.host').and_yield(http)
234
+ http.should_receive(:put).with('/processing_images/some/path', nil)
235
+ end
236
+ end
237
+
238
+ context "notification URL not provided" do
239
+ before do
240
+ subject.stub(:notification_url).and_return(nil)
241
+ end
242
+
243
+ it "should not PUT" do
244
+ Net::HTTP.should_not_receive(:put)
245
+ end
246
+ end
247
+ end
248
+
216
249
  describe :version_key do
217
250
  subject do
218
251
  job = Job.new
data/ungulate.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ungulate}
8
- s.version = "0.0.10"
8
+ s.version = "0.0.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Andrew Bruce"]
12
- s.date = %q{2010-09-29}
12
+ s.date = %q{2010-10-13}
13
13
  s.default_executable = %q{ungulate_server.rb}
14
14
  s.description = %q{WIP}
15
15
  s.email = %q{andrew@camelpunch.com}
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ungulate
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 10
10
- version: 0.0.10
9
+ - 11
10
+ version: 0.0.11
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Bruce
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-29 00:00:00 +01:00
18
+ date: 2010-10-13 00:00:00 +01:00
19
19
  default_executable: ungulate_server.rb
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency