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 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.2.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 = %q{imageproxy}
8
- s.version = "0.2.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 = %q{2011-08-28}
13
- s.description = %q{A image processing proxy server, written in Ruby as a Rack application. Requires ImageMagick.}
14
- s.email = %q{erik@eahanson.com}
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 = %q{http://github.com/eahanson/imageproxy}
50
+ s.homepage = "http://github.com/eahanson/imageproxy"
51
51
  s.licenses = ["MIT"]
52
52
  s.require_paths = ["lib"]
53
- s.rubygems_version = %q{1.5.2}
54
- s.summary = %q{A image processing proxy server, written in Ruby as a Rack application.}
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
@@ -54,18 +54,22 @@ module Imageproxy
54
54
 
55
55
  def merge_obfuscated
56
56
  if @hash["_"]
57
- decoded = Base64.decode64(CGI.unescape(@hash["_"]))
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 = Base64.decode64(CGI.unescape(@hash["-"]))
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
- hash: 23
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
- date: 2011-08-28 00:00:00 -07:00
19
- default_executable:
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
- version_requirements: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &31896780 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
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
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
23
+ prerelease: false
24
+ version_requirements: *31896780
25
+ - !ruby/object:Gem::Dependency
36
26
  name: rake
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
27
+ requirement: &31896260 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
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
- requirement: *id002
49
- - !ruby/object:Gem::Dependency
34
+ prerelease: false
35
+ version_requirements: *31896260
36
+ - !ruby/object:Gem::Dependency
50
37
  name: mime-types
51
- version_requirements: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &31895740 !ruby/object:Gem::Requirement
52
39
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
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
- requirement: *id003
63
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *31895740
47
+ - !ruby/object:Gem::Dependency
64
48
  name: heroku
65
- version_requirements: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &31895220 !ruby/object:Gem::Requirement
66
50
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
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
- requirement: *id004
77
- - !ruby/object:Gem::Dependency
56
+ prerelease: false
57
+ version_requirements: *31895220
58
+ - !ruby/object:Gem::Dependency
78
59
  name: shotgun
79
- version_requirements: &id005 !ruby/object:Gem::Requirement
60
+ requirement: &31894620 !ruby/object:Gem::Requirement
80
61
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
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
- requirement: *id005
91
- - !ruby/object:Gem::Dependency
67
+ prerelease: false
68
+ version_requirements: *31894620
69
+ - !ruby/object:Gem::Dependency
92
70
  name: rspec
93
- version_requirements: &id006 !ruby/object:Gem::Requirement
71
+ requirement: &31894020 !ruby/object:Gem::Requirement
94
72
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
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
- requirement: *id006
105
- - !ruby/object:Gem::Dependency
78
+ prerelease: false
79
+ version_requirements: *31894020
80
+ - !ruby/object:Gem::Dependency
106
81
  name: rack-test
107
- version_requirements: &id007 !ruby/object:Gem::Requirement
82
+ requirement: &31893420 !ruby/object:Gem::Requirement
108
83
  none: false
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- hash: 3
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
- requirement: *id007
119
- - !ruby/object:Gem::Dependency
89
+ prerelease: false
90
+ version_requirements: *31893420
91
+ - !ruby/object:Gem::Dependency
120
92
  name: awesome_print
121
- version_requirements: &id008 !ruby/object:Gem::Requirement
93
+ requirement: &31892720 !ruby/object:Gem::Requirement
122
94
  none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
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
- requirement: *id008
133
- - !ruby/object:Gem::Dependency
100
+ prerelease: false
101
+ version_requirements: *31892720
102
+ - !ruby/object:Gem::Dependency
134
103
  name: jeweler
135
- version_requirements: &id009 !ruby/object:Gem::Requirement
104
+ requirement: &31892240 !ruby/object:Gem::Requirement
136
105
  none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- hash: 3
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
- requirement: *id009
147
- description: A image processing proxy server, written in Ruby as a Rack application. Requires ImageMagick.
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
- hash: 3
201
- segments:
160
+ requirements:
161
+ - - ! '>='
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ segments:
202
165
  - 0
203
- version: "0"
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
- hash: 3
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.5.2
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
-