mugshot 0.6.3 → 1.0.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mugshot.rb +5 -2
- data/lib/mugshot/fs_storage.rb +1 -8
- data/lib/mugshot/s3_storage.rb +36 -0
- data/lib/mugshot/storage.rb +9 -1
- data/lib/mugshot/version.rb +1 -1
- data/spec/mugshot/application_spec.rb +38 -36
- data/spec/mugshot/fs_storage_spec.rb +0 -9
- data/spec/mugshot/s3_storage_spec.rb +25 -0
- data/spec/mugshot/storage_spec.rb +9 -0
- metadata +117 -163
data/lib/mugshot.rb
CHANGED
@@ -2,10 +2,13 @@
|
|
2
2
|
require "active_support/core_ext"
|
3
3
|
|
4
4
|
module Mugshot
|
5
|
+
autoload :MagickFactory, "mugshot/magick_factory"
|
5
6
|
autoload :Image, "mugshot/image"
|
7
|
+
|
6
8
|
autoload :Storage, "mugshot/storage"
|
7
9
|
autoload :FSStorage, "mugshot/fs_storage"
|
8
|
-
autoload :
|
10
|
+
autoload :S3Storage, "mugshot/s3_storage"
|
9
11
|
autoload :HTTPStorage, "mugshot/http_storage"
|
10
|
-
|
12
|
+
|
13
|
+
autoload :Application, "mugshot/application"
|
11
14
|
end
|
data/lib/mugshot/fs_storage.rb
CHANGED
@@ -18,19 +18,12 @@ class Mugshot::FSStorage < Mugshot::Storage
|
|
18
18
|
Mugshot::Image.new File.open(file)
|
19
19
|
end
|
20
20
|
|
21
|
-
|
21
|
+
protected
|
22
22
|
|
23
23
|
def initialize(root_path)
|
24
24
|
@root_path = root_path
|
25
25
|
FileUtils.mkdir_p(root_path)
|
26
26
|
end
|
27
27
|
|
28
|
-
def id_to_path(id)
|
29
|
-
path = id.to_s.clone
|
30
|
-
4.times do |i|
|
31
|
-
path = path.insert(3 + (i * 3) + i, '/')
|
32
|
-
end
|
33
|
-
path
|
34
|
-
end
|
35
28
|
end
|
36
29
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'fog'
|
3
|
+
|
4
|
+
class Mugshot::S3Storage < Mugshot::Storage
|
5
|
+
|
6
|
+
HEADERS = {'x-amz-acl' => 'public-read'}
|
7
|
+
|
8
|
+
def write(bin)
|
9
|
+
id = asset_id
|
10
|
+
path = id_to_path(id)
|
11
|
+
@storage.put_object(@bucket_name, path, bin, HEADERS)
|
12
|
+
id
|
13
|
+
end
|
14
|
+
|
15
|
+
def read(id)
|
16
|
+
path = id_to_path(id)
|
17
|
+
Mugshot::Image.new(@storage.get_object(@bucket_name, path).body)
|
18
|
+
rescue Excon::Errors::NotFound
|
19
|
+
nil
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def initialize(opts)
|
25
|
+
opts.to_options!
|
26
|
+
opts.assert_valid_keys(:bucket_name, :access_key_id, :secret_access_key)
|
27
|
+
|
28
|
+
@bucket_name = opts[:bucket_name]
|
29
|
+
|
30
|
+
@storage = Fog::Storage.new(:provider => 'AWS', :aws_access_key_id => opts[:access_key_id], :aws_secret_access_key => opts[:secret_access_key])
|
31
|
+
@storage.put_bucket(@bucket_name)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
data/lib/mugshot/storage.rb
CHANGED
data/lib/mugshot/version.rb
CHANGED
@@ -22,7 +22,7 @@ describe Mugshot::Application do
|
|
22
22
|
|
23
23
|
get "/image_id/any_name.jpg"
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
it "should accept default value for background" do
|
27
27
|
def app
|
28
28
|
Mugshot::Application.new(:storage => @storage, :background => :blue)
|
@@ -33,7 +33,7 @@ describe Mugshot::Application do
|
|
33
33
|
get "/image_id/any_name.jpg"
|
34
34
|
end
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
describe "POST /" do
|
38
38
|
it "should create image" do
|
39
39
|
file_read = nil
|
@@ -60,7 +60,7 @@ describe Mugshot::Application do
|
|
60
60
|
last_response.status.should == 405
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
describe "GET /:ops/:ops_params/:id/:name.:format" do
|
65
65
|
it "should perform operations on image" do
|
66
66
|
@image.should_receive(:resize!).with("140x140")
|
@@ -102,7 +102,7 @@ describe Mugshot::Application do
|
|
102
102
|
last_response.status.should == 400
|
103
103
|
last_response.body.should be_empty
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
it "should halt 400 on URL with invalid operation/param pair" do
|
107
107
|
get "/140x105/image_id/any_name.jpg"
|
108
108
|
|
@@ -110,23 +110,24 @@ describe Mugshot::Application do
|
|
110
110
|
last_response.body.should be_empty
|
111
111
|
end
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
describe "GET /" do
|
115
115
|
it "should return ok as healthcheck" do
|
116
116
|
get "/"
|
117
|
-
|
117
|
+
|
118
118
|
last_response.should be_ok
|
119
119
|
last_response.body.should == "ok"
|
120
120
|
end
|
121
121
|
end
|
122
122
|
|
123
|
-
describe "
|
123
|
+
describe "cache" do
|
124
124
|
it "should cache response with max age of 1 day" do
|
125
|
-
|
125
|
+
@image.stub!(:to_blob).and_return("image data")
|
126
|
+
get "/crop/140x105/image_id/any_name.jpg"
|
126
127
|
last_response.headers["Cache-Control"].should == "public, max-age=31557600"
|
127
128
|
end
|
128
129
|
end
|
129
|
-
|
130
|
+
|
130
131
|
describe "configuration" do
|
131
132
|
describe "cache duration" do
|
132
133
|
it "should use the configured cache duration" do
|
@@ -134,11 +135,12 @@ describe Mugshot::Application do
|
|
134
135
|
Mugshot::Application.new(:storage => @storage, :cache_duration => 3.days.to_i)
|
135
136
|
end
|
136
137
|
|
137
|
-
|
138
|
+
@image.stub!(:to_blob).and_return("image data")
|
139
|
+
get "/crop/140x105/image_id/any_name.jpg"
|
138
140
|
last_response.headers["Cache-Control"].should == "public, max-age=#{3.days.to_i}"
|
139
141
|
end
|
140
142
|
end
|
141
|
-
|
143
|
+
|
142
144
|
describe "valid operations" do
|
143
145
|
it "should allow a valid operation" do
|
144
146
|
def app
|
@@ -146,12 +148,12 @@ describe Mugshot::Application do
|
|
146
148
|
end
|
147
149
|
|
148
150
|
@image.stub!(:to_blob).and_return("image data")
|
149
|
-
|
151
|
+
|
150
152
|
get "/resize/200x100/image_id/any_name.jpg"
|
151
153
|
last_response.should be_ok
|
152
154
|
last_response.body.should == "image data"
|
153
155
|
end
|
154
|
-
|
156
|
+
|
155
157
|
it "should halt with a 400 (Bad Request) when an invalid operation is given" do
|
156
158
|
def app
|
157
159
|
Mugshot::Application.new(:storage => @storage, :valid_operations => ["crop", "resize"])
|
@@ -161,7 +163,7 @@ describe Mugshot::Application do
|
|
161
163
|
last_response.status.should == 400
|
162
164
|
end
|
163
165
|
end
|
164
|
-
|
166
|
+
|
165
167
|
describe "quality range" do
|
166
168
|
it "should allow quality operations with values in the configured range" do
|
167
169
|
def app
|
@@ -169,24 +171,24 @@ describe Mugshot::Application do
|
|
169
171
|
end
|
170
172
|
|
171
173
|
@image.stub!(:to_blob).and_return("image data")
|
172
|
-
|
174
|
+
|
173
175
|
1.upto(200) do |quality|
|
174
176
|
get "/quality/#{quality}/image_id/any_name.jpg"
|
175
177
|
last_response.should be_ok
|
176
178
|
last_response.body.should == "image data"
|
177
179
|
end
|
178
180
|
end
|
179
|
-
|
181
|
+
|
180
182
|
it "should allow quality operations when no range is configured" do
|
181
183
|
@image.stub!(:to_blob).and_return("image data")
|
182
|
-
|
184
|
+
|
183
185
|
1.upto(300) do |quality|
|
184
186
|
get "/quality/#{quality}/image_id/any_name.jpg"
|
185
187
|
last_response.should be_ok
|
186
188
|
last_response.body.should == "image data"
|
187
189
|
end
|
188
190
|
end
|
189
|
-
|
191
|
+
|
190
192
|
it "should halt with a 400 (Bad Request) quality operations with values outside the configured range" do
|
191
193
|
def app
|
192
194
|
Mugshot::Application.new(:storage => @storage, :quality_range => 1..200)
|
@@ -194,17 +196,17 @@ describe Mugshot::Application do
|
|
194
196
|
|
195
197
|
get "/quality/0/image_id/any_name.jpg"
|
196
198
|
last_response.status.should == 400
|
197
|
-
|
199
|
+
|
198
200
|
get "/quality/201/image_id/any_name.jpg"
|
199
201
|
last_response.status.should == 400
|
200
202
|
end
|
201
203
|
end
|
202
|
-
|
204
|
+
|
203
205
|
describe "allowed sizes" do
|
204
206
|
def allowed_sizes
|
205
207
|
['640x480', '640x360', '480x360', '320x240']
|
206
208
|
end
|
207
|
-
|
209
|
+
|
208
210
|
%w{resize crop}.each do |operation|
|
209
211
|
it "should allow #{operation} operations for configured values" do
|
210
212
|
def app
|
@@ -212,28 +214,28 @@ describe Mugshot::Application do
|
|
212
214
|
end
|
213
215
|
|
214
216
|
@image.stub!(:to_blob).and_return("image data")
|
215
|
-
|
217
|
+
|
216
218
|
allowed_sizes.each do |size|
|
217
219
|
get "/#{operation}/#{size}/image_id/any_name.jpg"
|
218
220
|
last_response.should be_ok
|
219
221
|
last_response.body.should == "image data"
|
220
222
|
end
|
221
223
|
end
|
222
|
-
|
224
|
+
|
223
225
|
it "should allow #{operation} operations when allowed sizes is not configured" do
|
224
226
|
def app
|
225
227
|
Mugshot::Application.new(:storage => @storage)
|
226
228
|
end
|
227
229
|
|
228
230
|
@image.stub!(:to_blob).and_return("image data")
|
229
|
-
|
231
|
+
|
230
232
|
['300x200', '400x250'].each do |size|
|
231
233
|
get "/#{operation}/#{size}/image_id/any_name.jpg"
|
232
234
|
last_response.should be_ok
|
233
235
|
last_response.body.should == "image data"
|
234
236
|
end
|
235
237
|
end
|
236
|
-
|
238
|
+
|
237
239
|
it "should halt with a 400 (Bad Request) #{operation} operations with a not allowed size" do
|
238
240
|
def app
|
239
241
|
Mugshot::Application.new(:storage => @storage, :allowed_sizes => allowed_sizes)
|
@@ -241,13 +243,13 @@ describe Mugshot::Application do
|
|
241
243
|
|
242
244
|
get "/#{operation}/300x200/image_id/any_name.jpg"
|
243
245
|
last_response.status.should == 400
|
244
|
-
|
246
|
+
|
245
247
|
get "/#{operation}/480x300/image_id/any_name.jpg"
|
246
248
|
last_response.status.should == 400
|
247
249
|
end
|
248
250
|
end
|
249
251
|
end
|
250
|
-
|
252
|
+
|
251
253
|
describe "allowed formats" do
|
252
254
|
it "should allow valid formats" do
|
253
255
|
def app
|
@@ -255,22 +257,22 @@ describe Mugshot::Application do
|
|
255
257
|
end
|
256
258
|
|
257
259
|
@image.stub!(:to_blob).and_return("image data")
|
258
|
-
|
260
|
+
|
259
261
|
["jpg", "png"].each do |format|
|
260
262
|
get "/image_id/any_name.#{format}"
|
261
263
|
last_response.should be_ok
|
262
264
|
last_response.body.should == "image data"
|
263
265
|
end
|
264
266
|
end
|
265
|
-
|
267
|
+
|
266
268
|
it "should allow any format when no allowed format is configured" do
|
267
269
|
@image.stub!(:to_blob).and_return("image data")
|
268
|
-
|
270
|
+
|
269
271
|
get "/image_id/any_name.tiff"
|
270
272
|
last_response.should be_ok
|
271
273
|
last_response.body.should == "image data"
|
272
274
|
end
|
273
|
-
|
275
|
+
|
274
276
|
it "should halt with a 400 (Bad Request) when an invalid format is given" do
|
275
277
|
def app
|
276
278
|
Mugshot::Application.new(:storage => @storage, :allowed_formats => ["jpg", "png"])
|
@@ -280,7 +282,7 @@ describe Mugshot::Application do
|
|
280
282
|
last_response.status.should == 400
|
281
283
|
end
|
282
284
|
end
|
283
|
-
|
285
|
+
|
284
286
|
describe "allowed names" do
|
285
287
|
it "should allow valid names" do
|
286
288
|
def app
|
@@ -288,22 +290,22 @@ describe Mugshot::Application do
|
|
288
290
|
end
|
289
291
|
|
290
292
|
@image.stub!(:to_blob).and_return("image data")
|
291
|
-
|
293
|
+
|
292
294
|
["some_name", "some_other_name"].each do |name|
|
293
295
|
get "/image_id/#{name}.jpg"
|
294
296
|
last_response.should be_ok
|
295
297
|
last_response.body.should == "image data"
|
296
298
|
end
|
297
299
|
end
|
298
|
-
|
300
|
+
|
299
301
|
it "should allow any name when no allowed name is configured" do
|
300
302
|
@image.stub!(:to_blob).and_return("image data")
|
301
|
-
|
303
|
+
|
302
304
|
get "/image_id/any_name.tiff"
|
303
305
|
last_response.should be_ok
|
304
306
|
last_response.body.should == "image data"
|
305
307
|
end
|
306
|
-
|
308
|
+
|
307
309
|
it "should halt with a 400 (Bad Request) when an invalid name is given" do
|
308
310
|
def app
|
309
311
|
Mugshot::Application.new(:storage => @storage, :allowed_names => ["some_name", "some_other_name"])
|
@@ -6,11 +6,6 @@ describe Mugshot::FSStorage do
|
|
6
6
|
@fs = Mugshot::FSStorage.new("/tmp/mugshot/spec")
|
7
7
|
end
|
8
8
|
|
9
|
-
after :each do
|
10
|
-
require 'fileutils'
|
11
|
-
#FileUtils.rm_rf("/tmp/mugshot/spec")
|
12
|
-
end
|
13
|
-
|
14
9
|
it "should write an image to the filesystem and read it back" do
|
15
10
|
bin = File.open("spec/files/test.jpg").read
|
16
11
|
|
@@ -26,8 +21,4 @@ describe Mugshot::FSStorage do
|
|
26
21
|
it "should return nil when an image with the given id doesn't exist on the filesystem" do
|
27
22
|
@fs.read('nonexistant-id').should be_nil
|
28
23
|
end
|
29
|
-
|
30
|
-
it "should convert an id to path with 4r levels of directories" do
|
31
|
-
@fs.send(:id_to_path, "a9657a30c7df012c736512313b021ce1").should == "a96/57a/30c/7df/012c736512313b021ce1"
|
32
|
-
end
|
33
24
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
+
require 'fog'
|
4
|
+
|
5
|
+
describe Mugshot::S3Storage do
|
6
|
+
before :each do
|
7
|
+
Fog.mock!
|
8
|
+
@fs = Mugshot::S3Storage.new(:bucket_name => 'bucket_name', :access_key_id => 'access_key_id', :secret_access_key => 'secret_access_key')
|
9
|
+
@bin = File.open("spec/files/test.jpg").read
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should write an image to the filesystem and read it back" do
|
13
|
+
image = Mugshot::Image.new(File.open("spec/files/test.jpg"))
|
14
|
+
Mugshot::Image.stub!(:new).and_return(image)
|
15
|
+
|
16
|
+
id = @fs.write(@bin)
|
17
|
+
|
18
|
+
image2 = @fs.read(id)
|
19
|
+
image2.should == image
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should return nil when an image with the given id doesn't exist on the filesystem" do
|
23
|
+
@fs.read('nonexistant-id').should be_nil
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
3
|
+
|
4
|
+
describe Mugshot::Storage do
|
5
|
+
it "should convert an id to path with 6 levels of directories" do
|
6
|
+
@fs = Mugshot::Storage.new
|
7
|
+
@fs.send(:id_to_path, "a9657a30c7df012c736512313b021ce1").should == "a9/65/7a/30/c7/df/012c736512313b021ce1"
|
8
|
+
end
|
9
|
+
end
|
metadata
CHANGED
@@ -1,17 +1,12 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: mugshot
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 6
|
9
|
-
- 3
|
10
|
-
version: 0.6.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.rc1
|
5
|
+
prerelease: 6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
13
|
-
-
|
14
|
-
-
|
7
|
+
authors:
|
8
|
+
- Cainã Nunes
|
9
|
+
- Fabrício Lopes
|
15
10
|
- Guilherme Cirne
|
16
11
|
- Jose Peleteiro
|
17
12
|
- Vicente Mundim
|
@@ -19,171 +14,135 @@ authors:
|
|
19
14
|
autorequire:
|
20
15
|
bindir: bin
|
21
16
|
cert_chain: []
|
22
|
-
|
23
|
-
date: 2011-04-25 00:00:00 -03:00
|
17
|
+
date: 2011-04-25 00:00:00.000000000 -03:00
|
24
18
|
default_executable:
|
25
|
-
dependencies:
|
26
|
-
- !ruby/object:Gem::Dependency
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
27
21
|
name: activesupport
|
28
|
-
|
29
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
requirement: &70305760270860 !ruby/object:Gem::Requirement
|
30
23
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
hash: 9
|
35
|
-
segments:
|
36
|
-
- 2
|
37
|
-
- 3
|
38
|
-
- 5
|
24
|
+
requirements:
|
25
|
+
- - ! '>='
|
26
|
+
- !ruby/object:Gem::Version
|
39
27
|
version: 2.3.5
|
40
28
|
type: :runtime
|
41
|
-
version_requirements: *id001
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: i18n
|
44
29
|
prerelease: false
|
45
|
-
|
30
|
+
version_requirements: *70305760270860
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: i18n
|
33
|
+
requirement: &70305760270340 !ruby/object:Gem::Requirement
|
46
34
|
none: false
|
47
|
-
requirements:
|
48
|
-
- -
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
hash: 11
|
51
|
-
segments:
|
52
|
-
- 0
|
53
|
-
- 5
|
54
|
-
- 0
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
55
38
|
version: 0.5.0
|
56
39
|
type: :runtime
|
57
|
-
version_requirements: *id002
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: rmagick
|
60
40
|
prerelease: false
|
61
|
-
|
41
|
+
version_requirements: *70305760270340
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rmagick
|
44
|
+
requirement: &70305766710800 !ruby/object:Gem::Requirement
|
62
45
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
hash: 59
|
67
|
-
segments:
|
68
|
-
- 2
|
69
|
-
- 12
|
70
|
-
- 2
|
46
|
+
requirements:
|
47
|
+
- - ! '>='
|
48
|
+
- !ruby/object:Gem::Version
|
71
49
|
version: 2.12.2
|
72
50
|
type: :runtime
|
73
|
-
version_requirements: *id003
|
74
|
-
- !ruby/object:Gem::Dependency
|
75
|
-
name: uuid
|
76
51
|
prerelease: false
|
77
|
-
|
52
|
+
version_requirements: *70305766710800
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: uuid
|
55
|
+
requirement: &70305766710320 !ruby/object:Gem::Requirement
|
78
56
|
none: false
|
79
|
-
requirements:
|
80
|
-
- -
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
hash: 11
|
83
|
-
segments:
|
84
|
-
- 2
|
85
|
-
- 0
|
86
|
-
- 2
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
87
60
|
version: 2.0.2
|
88
61
|
type: :runtime
|
89
|
-
version_requirements: *id004
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: blankslate
|
92
62
|
prerelease: false
|
93
|
-
|
63
|
+
version_requirements: *70305766710320
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: blankslate
|
66
|
+
requirement: &70305766709840 !ruby/object:Gem::Requirement
|
94
67
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
hash: 105
|
99
|
-
segments:
|
100
|
-
- 2
|
101
|
-
- 1
|
102
|
-
- 2
|
103
|
-
- 3
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
104
71
|
version: 2.1.2.3
|
105
72
|
type: :runtime
|
106
|
-
version_requirements: *id005
|
107
|
-
- !ruby/object:Gem::Dependency
|
108
|
-
name: sinatra
|
109
73
|
prerelease: false
|
110
|
-
|
74
|
+
version_requirements: *70305766709840
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: sinatra
|
77
|
+
requirement: &70305766709360 !ruby/object:Gem::Requirement
|
111
78
|
none: false
|
112
|
-
requirements:
|
113
|
-
- -
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
hash: 51
|
116
|
-
segments:
|
117
|
-
- 0
|
118
|
-
- 9
|
119
|
-
- 4
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
120
82
|
version: 0.9.4
|
121
83
|
type: :runtime
|
122
|
-
version_requirements: *id006
|
123
|
-
- !ruby/object:Gem::Dependency
|
124
|
-
name: fakeweb
|
125
84
|
prerelease: false
|
126
|
-
|
85
|
+
version_requirements: *70305766709360
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: fog
|
88
|
+
requirement: &70305766708880 !ruby/object:Gem::Requirement
|
127
89
|
none: false
|
128
|
-
requirements:
|
129
|
-
- -
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.7.2
|
94
|
+
type: :runtime
|
95
|
+
prerelease: false
|
96
|
+
version_requirements: *70305766708880
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: fakeweb
|
99
|
+
requirement: &70305766708400 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
135
105
|
type: :development
|
136
|
-
version_requirements: *id007
|
137
|
-
- !ruby/object:Gem::Dependency
|
138
|
-
name: rspec
|
139
106
|
prerelease: false
|
140
|
-
|
107
|
+
version_requirements: *70305766708400
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
name: rspec
|
110
|
+
requirement: &70305766707920 !ruby/object:Gem::Requirement
|
141
111
|
none: false
|
142
|
-
requirements:
|
143
|
-
- -
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
hash: 3
|
146
|
-
segments:
|
147
|
-
- 2
|
148
|
-
- 3
|
149
|
-
- 0
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
150
115
|
version: 2.3.0
|
151
116
|
type: :development
|
152
|
-
version_requirements: *id008
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: cucumber
|
155
117
|
prerelease: false
|
156
|
-
|
118
|
+
version_requirements: *70305766707920
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
name: cucumber
|
121
|
+
requirement: &70305766707440 !ruby/object:Gem::Requirement
|
157
122
|
none: false
|
158
|
-
requirements:
|
159
|
-
- -
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
hash: 3
|
162
|
-
segments:
|
163
|
-
- 0
|
164
|
-
- 6
|
165
|
-
- 2
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
166
126
|
version: 0.6.2
|
167
127
|
type: :development
|
168
|
-
version_requirements: *id009
|
169
|
-
- !ruby/object:Gem::Dependency
|
170
|
-
name: rack-test
|
171
128
|
prerelease: false
|
172
|
-
|
129
|
+
version_requirements: *70305766707440
|
130
|
+
- !ruby/object:Gem::Dependency
|
131
|
+
name: rack-test
|
132
|
+
requirement: &70305766706960 !ruby/object:Gem::Requirement
|
173
133
|
none: false
|
174
|
-
requirements:
|
175
|
-
- -
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
hash: 9
|
178
|
-
segments:
|
179
|
-
- 0
|
180
|
-
- 5
|
181
|
-
- 1
|
134
|
+
requirements:
|
135
|
+
- - ! '>='
|
136
|
+
- !ruby/object:Gem::Version
|
182
137
|
version: 0.5.1
|
183
138
|
type: :development
|
184
|
-
|
185
|
-
|
186
|
-
|
139
|
+
prerelease: false
|
140
|
+
version_requirements: *70305766706960
|
141
|
+
description: ! 'The basic idea of Mugshot is that you upload the largest/highest quality
|
142
|
+
images possible. When retrieving the images you apply different operations to it
|
143
|
+
such as: resizing, rounded corners, transparency and anything else we can think
|
144
|
+
of!'
|
145
|
+
email:
|
187
146
|
- cainanunes@gmail.com
|
188
147
|
- fabriciolopesvital@gmail.com
|
189
148
|
- gcirne@gmail.com
|
@@ -191,13 +150,11 @@ email:
|
|
191
150
|
- vicente.mundim@gmail.com
|
192
151
|
- me@anselmoalves.com
|
193
152
|
executables: []
|
194
|
-
|
195
153
|
extensions: []
|
196
|
-
|
197
|
-
extra_rdoc_files:
|
154
|
+
extra_rdoc_files:
|
198
155
|
- LICENSE
|
199
156
|
- README.md
|
200
|
-
files:
|
157
|
+
files:
|
201
158
|
- lib/mugshot.rb
|
202
159
|
- lib/mugshot/application.rb
|
203
160
|
- lib/mugshot/fs_storage.rb
|
@@ -205,6 +162,7 @@ files:
|
|
205
162
|
- lib/mugshot/image.rb
|
206
163
|
- lib/mugshot/magick_factory.rb
|
207
164
|
- lib/mugshot/public/crossdomain.xml
|
165
|
+
- lib/mugshot/s3_storage.rb
|
208
166
|
- lib/mugshot/storage.rb
|
209
167
|
- lib/mugshot/version.rb
|
210
168
|
- LICENSE
|
@@ -237,43 +195,37 @@ files:
|
|
237
195
|
- spec/mugshot/http_storage_spec.rb
|
238
196
|
- spec/mugshot/image_spec.rb
|
239
197
|
- spec/mugshot/magick_factory_spec.rb
|
198
|
+
- spec/mugshot/s3_storage_spec.rb
|
199
|
+
- spec/mugshot/storage_spec.rb
|
240
200
|
- spec/spec_helper.rb
|
241
201
|
- spec/test.html
|
242
202
|
has_rdoc: true
|
243
203
|
homepage: http://mugshot.ws
|
244
204
|
licenses: []
|
245
|
-
|
246
205
|
post_install_message:
|
247
|
-
rdoc_options:
|
206
|
+
rdoc_options:
|
248
207
|
- --charset=UTF-8
|
249
|
-
require_paths:
|
208
|
+
require_paths:
|
250
209
|
- lib
|
251
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
210
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
252
211
|
none: false
|
253
|
-
requirements:
|
254
|
-
- -
|
255
|
-
- !ruby/object:Gem::Version
|
256
|
-
|
257
|
-
|
258
|
-
- 0
|
259
|
-
version: "0"
|
260
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ! '>='
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
261
217
|
none: false
|
262
|
-
requirements:
|
263
|
-
- -
|
264
|
-
- !ruby/object:Gem::Version
|
265
|
-
|
266
|
-
segments:
|
267
|
-
- 0
|
268
|
-
version: "0"
|
218
|
+
requirements:
|
219
|
+
- - ! '>'
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: 1.3.1
|
269
222
|
requirements: []
|
270
|
-
|
271
223
|
rubyforge_project: mugshot
|
272
|
-
rubygems_version: 1.
|
224
|
+
rubygems_version: 1.6.2
|
273
225
|
signing_key:
|
274
226
|
specification_version: 3
|
275
227
|
summary: Dead simple image server
|
276
|
-
test_files:
|
228
|
+
test_files:
|
277
229
|
- features/convert_image_format.feature
|
278
230
|
- features/crop_image.feature
|
279
231
|
- features/define_image_quality.feature
|
@@ -302,5 +254,7 @@ test_files:
|
|
302
254
|
- spec/mugshot/http_storage_spec.rb
|
303
255
|
- spec/mugshot/image_spec.rb
|
304
256
|
- spec/mugshot/magick_factory_spec.rb
|
257
|
+
- spec/mugshot/s3_storage_spec.rb
|
258
|
+
- spec/mugshot/storage_spec.rb
|
305
259
|
- spec/spec_helper.rb
|
306
260
|
- spec/test.html
|