imageproxy 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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
-