imageproxy 0.2.0 → 0.3.0
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/README.mdown +3 -2
- data/VERSION +1 -1
- data/imageproxy.gemspec +8 -8
- data/lib/imageproxy/options.rb +6 -2
- data/spec/options_spec.rb +10 -0
- metadata +97 -139
data/README.mdown
CHANGED
@@ -34,12 +34,10 @@ Feel free to help out with some of these :)
|
|
34
34
|
|
35
35
|
* specify crop size and offset
|
36
36
|
* create rounded corners
|
37
|
-
* try mounting inside a Rails app
|
38
37
|
* Rails helper for generating image tags that use imageproxy
|
39
38
|
* X-Sendfile / X-Accel-Redirect header
|
40
39
|
* better documentation
|
41
40
|
* signature generation testing tool
|
42
|
-
* package as a gem?
|
43
41
|
* nice error messages for improper API use
|
44
42
|
* performance
|
45
43
|
|
@@ -168,6 +166,9 @@ You may obfuscate your requests by Base64 encoding and then URL encoding your qu
|
|
168
166
|
http://example.com/convert?_=c3JjPWh0dHA6Ly9leGFtcGxlLmNvbS9kb2cuanBnJnJlc2l6ZT0xMHgxMA%3D%3D
|
169
167
|
http://example.com/convert/-/c3JjPWh0dHA6Ly9leGFtcGxlLmNvbS9kb2cuanBnJnJlc2l6ZT0xMHgxMA%3D%3D
|
170
168
|
|
169
|
+
You can also replace the "=" characters in the Base64-encoded strings with "." characters which may make it possible to
|
170
|
+
avoid having to percent-escape.
|
171
|
+
|
171
172
|
### Example requests
|
172
173
|
|
173
174
|
CloudFront-compatible URLs:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/imageproxy.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "imageproxy"
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Erik Hanson"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2012-05-16"
|
13
|
+
s.description = "A image processing proxy server, written in Ruby as a Rack application. Requires ImageMagick."
|
14
|
+
s.email = "erik@eahanson.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.mdown"
|
@@ -47,11 +47,11 @@ Gem::Specification.new do |s|
|
|
47
47
|
"spec/signature_spec.rb",
|
48
48
|
"spec/spec_helper.rb"
|
49
49
|
]
|
50
|
-
s.homepage =
|
50
|
+
s.homepage = "http://github.com/eahanson/imageproxy"
|
51
51
|
s.licenses = ["MIT"]
|
52
52
|
s.require_paths = ["lib"]
|
53
|
-
s.rubygems_version =
|
54
|
-
s.summary =
|
53
|
+
s.rubygems_version = "1.8.12"
|
54
|
+
s.summary = "A image processing proxy server, written in Ruby as a Rack application."
|
55
55
|
|
56
56
|
if s.respond_to? :specification_version then
|
57
57
|
s.specification_version = 3
|
data/lib/imageproxy/options.rb
CHANGED
@@ -54,18 +54,22 @@ module Imageproxy
|
|
54
54
|
|
55
55
|
def merge_obfuscated
|
56
56
|
if @hash["_"]
|
57
|
-
decoded =
|
57
|
+
decoded = decode64(CGI.unescape(@hash["_"]))
|
58
58
|
decoded_hash = CGI.parse(decoded)
|
59
59
|
@hash.delete "_"
|
60
60
|
decoded_hash.map { |k, v| @hash[k] = (v.class == Array) ? v.first : v }
|
61
61
|
end
|
62
62
|
|
63
63
|
if @hash["-"]
|
64
|
-
decoded =
|
64
|
+
decoded = decode64(CGI.unescape(@hash["-"]))
|
65
65
|
decoded_hash = Hash[*decoded.split('/').reject { |s| s.nil? || s.empty? }]
|
66
66
|
@hash.delete "-"
|
67
67
|
decoded_hash.map { |k, v| @hash[k] = (v.class == Array) ? v.first : v }
|
68
68
|
end
|
69
69
|
end
|
70
|
+
|
71
|
+
def decode64(encoded)
|
72
|
+
Base64.decode64(encoded.gsub(".", "="))
|
73
|
+
end
|
70
74
|
end
|
71
75
|
end
|
data/spec/options_spec.rb
CHANGED
@@ -60,6 +60,16 @@ describe Imageproxy::Options do
|
|
60
60
|
options.resize.should == "20x20"
|
61
61
|
options.source.should == "http://example.com/dog.jpg"
|
62
62
|
end
|
63
|
+
|
64
|
+
it "should allow padding with dots instead of equals signs" do
|
65
|
+
encoded = Base64.encode64("resize/20x20/source/http%3A%2F%2Fexample.com%2Fdo.jpg")
|
66
|
+
encoded.should include "="
|
67
|
+
encoded.gsub! "=", "."
|
68
|
+
escaped = CGI.escape(encoded)
|
69
|
+
options = Imageproxy::Options.new "/convert/-/#{escaped}", {}
|
70
|
+
options.resize.should == "20x20"
|
71
|
+
options.source.should == "http://example.com/do.jpg"
|
72
|
+
end
|
63
73
|
end
|
64
74
|
|
65
75
|
describe "quality" do
|
metadata
CHANGED
@@ -1,159 +1,124 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: imageproxy
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 0
|
10
|
-
version: 0.2.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Erik Hanson
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-05-16 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rack
|
23
|
-
|
16
|
+
requirement: &31896780 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
32
|
-
prerelease: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
33
22
|
type: :runtime
|
34
|
-
|
35
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *31896780
|
25
|
+
- !ruby/object:Gem::Dependency
|
36
26
|
name: rake
|
37
|
-
|
27
|
+
requirement: &31896260 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
46
|
-
prerelease: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
47
33
|
type: :runtime
|
48
|
-
|
49
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *31896260
|
36
|
+
- !ruby/object:Gem::Dependency
|
50
37
|
name: mime-types
|
51
|
-
|
38
|
+
requirement: &31895740 !ruby/object:Gem::Requirement
|
52
39
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
60
|
-
prerelease: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
61
44
|
type: :runtime
|
62
|
-
|
63
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *31895740
|
47
|
+
- !ruby/object:Gem::Dependency
|
64
48
|
name: heroku
|
65
|
-
|
49
|
+
requirement: &31895220 !ruby/object:Gem::Requirement
|
66
50
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
version: "0"
|
74
|
-
prerelease: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
75
55
|
type: :development
|
76
|
-
|
77
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *31895220
|
58
|
+
- !ruby/object:Gem::Dependency
|
78
59
|
name: shotgun
|
79
|
-
|
60
|
+
requirement: &31894620 !ruby/object:Gem::Requirement
|
80
61
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
version: "0"
|
88
|
-
prerelease: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
89
66
|
type: :development
|
90
|
-
|
91
|
-
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *31894620
|
69
|
+
- !ruby/object:Gem::Dependency
|
92
70
|
name: rspec
|
93
|
-
|
71
|
+
requirement: &31894020 !ruby/object:Gem::Requirement
|
94
72
|
none: false
|
95
|
-
requirements:
|
96
|
-
- -
|
97
|
-
- !ruby/object:Gem::Version
|
98
|
-
|
99
|
-
segments:
|
100
|
-
- 0
|
101
|
-
version: "0"
|
102
|
-
prerelease: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
103
77
|
type: :development
|
104
|
-
|
105
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *31894020
|
80
|
+
- !ruby/object:Gem::Dependency
|
106
81
|
name: rack-test
|
107
|
-
|
82
|
+
requirement: &31893420 !ruby/object:Gem::Requirement
|
108
83
|
none: false
|
109
|
-
requirements:
|
110
|
-
- -
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
|
113
|
-
segments:
|
114
|
-
- 0
|
115
|
-
version: "0"
|
116
|
-
prerelease: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
117
88
|
type: :development
|
118
|
-
|
119
|
-
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *31893420
|
91
|
+
- !ruby/object:Gem::Dependency
|
120
92
|
name: awesome_print
|
121
|
-
|
93
|
+
requirement: &31892720 !ruby/object:Gem::Requirement
|
122
94
|
none: false
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
|
127
|
-
segments:
|
128
|
-
- 0
|
129
|
-
version: "0"
|
130
|
-
prerelease: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
131
99
|
type: :development
|
132
|
-
|
133
|
-
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *31892720
|
102
|
+
- !ruby/object:Gem::Dependency
|
134
103
|
name: jeweler
|
135
|
-
|
104
|
+
requirement: &31892240 !ruby/object:Gem::Requirement
|
136
105
|
none: false
|
137
|
-
requirements:
|
138
|
-
- -
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
|
141
|
-
segments:
|
142
|
-
- 0
|
143
|
-
version: "0"
|
144
|
-
prerelease: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
145
110
|
type: :development
|
146
|
-
|
147
|
-
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *31892240
|
113
|
+
description: A image processing proxy server, written in Ruby as a Rack application.
|
114
|
+
Requires ImageMagick.
|
148
115
|
email: erik@eahanson.com
|
149
116
|
executables: []
|
150
|
-
|
151
117
|
extensions: []
|
152
|
-
|
153
|
-
extra_rdoc_files:
|
118
|
+
extra_rdoc_files:
|
154
119
|
- LICENSE.txt
|
155
120
|
- README.mdown
|
156
|
-
files:
|
121
|
+
files:
|
157
122
|
- .document
|
158
123
|
- Gemfile
|
159
124
|
- Gemfile.lock
|
@@ -183,39 +148,32 @@ files:
|
|
183
148
|
- spec/server_spec.rb
|
184
149
|
- spec/signature_spec.rb
|
185
150
|
- spec/spec_helper.rb
|
186
|
-
has_rdoc: true
|
187
151
|
homepage: http://github.com/eahanson/imageproxy
|
188
|
-
licenses:
|
152
|
+
licenses:
|
189
153
|
- MIT
|
190
154
|
post_install_message:
|
191
155
|
rdoc_options: []
|
192
|
-
|
193
|
-
require_paths:
|
156
|
+
require_paths:
|
194
157
|
- lib
|
195
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
196
159
|
none: false
|
197
|
-
requirements:
|
198
|
-
- -
|
199
|
-
- !ruby/object:Gem::Version
|
200
|
-
|
201
|
-
segments:
|
160
|
+
requirements:
|
161
|
+
- - ! '>='
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
segments:
|
202
165
|
- 0
|
203
|
-
|
204
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
166
|
+
hash: -4468213037548042789
|
167
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
168
|
none: false
|
206
|
-
requirements:
|
207
|
-
- -
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
|
210
|
-
segments:
|
211
|
-
- 0
|
212
|
-
version: "0"
|
169
|
+
requirements:
|
170
|
+
- - ! '>='
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
213
173
|
requirements: []
|
214
|
-
|
215
174
|
rubyforge_project:
|
216
|
-
rubygems_version: 1.
|
175
|
+
rubygems_version: 1.8.12
|
217
176
|
signing_key:
|
218
177
|
specification_version: 3
|
219
178
|
summary: A image processing proxy server, written in Ruby as a Rack application.
|
220
179
|
test_files: []
|
221
|
-
|