mugshot 0.6.3 → 1.0.0.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|