ruby-thumbor 2.0.1 → 3.0.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.
- checksums.yaml +5 -5
- data/README.rdoc +12 -8
- data/lib/ruby-thumbor.rb +0 -1
- data/lib/thumbor/cascade.rb +5 -9
- data/lib/thumbor/crypto_url.rb +8 -28
- data/lib/thumbor/version.rb +1 -1
- data/spec/spec_helper.rb +7 -3
- data/spec/thumbor/cascade_spec.rb +147 -324
- metadata +7 -67
- data/spec/thumbor/crypto_url_spec.rb +0 -482
- data/spec/util/thumbor.rb +0 -7
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-thumbor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernardo Heynemann
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -39,48 +39,6 @@ dependencies:
|
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: guard-rspec
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
|
-
type: :development
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: rb-fsevent
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - "~>"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 0.9.1
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - "~>"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 0.9.1
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: listen
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: 1.3.1
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - "~>"
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 1.3.1
|
84
42
|
- !ruby/object:Gem::Dependency
|
85
43
|
name: rake
|
86
44
|
requirement: !ruby/object:Gem::Requirement
|
@@ -96,7 +54,7 @@ dependencies:
|
|
96
54
|
- !ruby/object:Gem::Version
|
97
55
|
version: '0'
|
98
56
|
- !ruby/object:Gem::Dependency
|
99
|
-
name:
|
57
|
+
name: rspec_junit_formatter
|
100
58
|
requirement: !ruby/object:Gem::Requirement
|
101
59
|
requirements:
|
102
60
|
- - ">="
|
@@ -109,21 +67,7 @@ dependencies:
|
|
109
67
|
- - ">="
|
110
68
|
- !ruby/object:Gem::Version
|
111
69
|
version: '0'
|
112
|
-
-
|
113
|
-
name: tins
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - "<"
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: 1.7.0
|
119
|
-
type: :development
|
120
|
-
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - "<"
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: 1.7.0
|
126
|
-
description: ruby-thumbor is the client to the thumbor imaging service (http://github.com/globocom/thumbor).
|
70
|
+
description: ruby-thumbor is the client to the thumbor imaging service (http://github.com/thumbor/thumbor).
|
127
71
|
email:
|
128
72
|
- heynemann@gmail.com
|
129
73
|
- guivideojob@gmail.com
|
@@ -138,9 +82,7 @@ files:
|
|
138
82
|
- lib/thumbor/version.rb
|
139
83
|
- spec/spec_helper.rb
|
140
84
|
- spec/thumbor/cascade_spec.rb
|
141
|
-
|
142
|
-
- spec/util/thumbor.rb
|
143
|
-
homepage: http://github.com/heynemann/ruby-thumbor
|
85
|
+
homepage: http://github.com/thumbor/ruby-thumbor
|
144
86
|
licenses: []
|
145
87
|
metadata: {}
|
146
88
|
post_install_message:
|
@@ -161,12 +103,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
103
|
version: '0'
|
162
104
|
requirements: []
|
163
105
|
rubyforge_project:
|
164
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.7.6
|
165
107
|
signing_key:
|
166
108
|
specification_version: 4
|
167
|
-
summary: ruby-thumbor is the client to the thumbor imaging service (http://github.com/
|
109
|
+
summary: ruby-thumbor is the client to the thumbor imaging service (http://github.com/thumbor/thumbor).
|
168
110
|
test_files:
|
169
111
|
- spec/spec_helper.rb
|
170
112
|
- spec/thumbor/cascade_spec.rb
|
171
|
-
- spec/thumbor/crypto_url_spec.rb
|
172
|
-
- spec/util/thumbor.rb
|
@@ -1,482 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'json'
|
3
|
-
require 'ruby-thumbor'
|
4
|
-
require 'util/thumbor'
|
5
|
-
|
6
|
-
image_url = 'my.domain.com/some/image/url.jpg'
|
7
|
-
image_md5 = 'f33af67e41168e80fcc5b00f8bd8061a'
|
8
|
-
key = 'my-security-key'
|
9
|
-
|
10
|
-
describe Thumbor::CryptoURL do
|
11
|
-
subject { Thumbor::CryptoURL.new key }
|
12
|
-
|
13
|
-
describe '#new' do
|
14
|
-
it "should create a new instance passing key and keep it" do
|
15
|
-
expect(subject.computed_key).to eq('my-security-keym')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
describe '#url_for' do
|
20
|
-
|
21
|
-
it "should return just the image hash if no arguments passed" do
|
22
|
-
url = subject.url_for :image => image_url
|
23
|
-
expect(url).to eq(image_md5)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should raise if no image passed" do
|
27
|
-
expect { subject.url_for Hash.new }.to raise_error(RuntimeError)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should return proper url for width-only" do
|
31
|
-
url = subject.url_for :image => image_url, :width => 300
|
32
|
-
expect(url).to eq('300x0/' << image_md5)
|
33
|
-
end
|
34
|
-
|
35
|
-
it "should return proper url for height-only" do
|
36
|
-
url = subject.url_for :image => image_url, :height => 300
|
37
|
-
expect(url).to eq('0x300/' << image_md5)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should return proper url for width and height" do
|
41
|
-
url = subject.url_for :image => image_url, :width => 200, :height => 300
|
42
|
-
expect(url).to eq('200x300/' << image_md5)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should return proper smart url" do
|
46
|
-
url = subject.url_for :image => image_url, :width => 200, :height => 300, :smart => true
|
47
|
-
expect(url).to eq('200x300/smart/' << image_md5)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should return proper fit-in url" do
|
51
|
-
url = subject.url_for :image => image_url, :width => 200, :height => 300, :fit_in => true
|
52
|
-
expect(url).to eq('fit-in/200x300/' << image_md5)
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should return proper flip url if no width and height" do
|
56
|
-
url = subject.url_for :image => image_url, :flip => true
|
57
|
-
expect(url).to eq('-0x0/' << image_md5)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should return proper flop url if no width and height" do
|
61
|
-
url = subject.url_for :image => image_url, :flop => true
|
62
|
-
expect(url).to eq('0x-0/' << image_md5)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should return proper flip-flop url if no width and height" do
|
66
|
-
url = subject.url_for :image => image_url, :flip => true, :flop => true
|
67
|
-
expect(url).to eq('-0x-0/' << image_md5)
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should return proper flip url if width" do
|
71
|
-
url = subject.url_for :image => image_url, :width => 300, :flip => true
|
72
|
-
expect(url).to eq('-300x0/' << image_md5)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "should return proper flop url if height" do
|
76
|
-
url = subject.url_for :image => image_url, :height => 300, :flop => true
|
77
|
-
expect(url).to eq('0x-300/' << image_md5)
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should return horizontal align" do
|
81
|
-
url = subject.url_for :image => image_url, :halign => :left
|
82
|
-
expect(url).to eq('left/' << image_md5)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should not return horizontal align if it is center" do
|
86
|
-
url = subject.url_for :image => image_url, :halign => :center
|
87
|
-
expect(url).to eq(image_md5)
|
88
|
-
end
|
89
|
-
|
90
|
-
it "should return vertical align" do
|
91
|
-
url = subject.url_for :image => image_url, :valign => :top
|
92
|
-
expect(url).to eq('top/' << image_md5)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "should not return vertical align if it is middle" do
|
96
|
-
url = subject.url_for :image => image_url, :valign => :middle
|
97
|
-
expect(url).to eq(image_md5)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should return halign and valign properly" do
|
101
|
-
url = subject.url_for :image => image_url, :halign => :left, :valign => :top
|
102
|
-
expect(url).to eq('left/top/' << image_md5)
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should return meta properly" do
|
106
|
-
url = subject.url_for :image => image_url, :meta => true
|
107
|
-
expect(url).to eq('meta/' << image_md5)
|
108
|
-
end
|
109
|
-
|
110
|
-
it "should return proper crop url" do
|
111
|
-
url = subject.url_for :image => image_url, :crop => [10, 20, 30, 40]
|
112
|
-
expect(url).to eq('10x20:30x40/' << image_md5)
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should ignore crop if all zeros" do
|
116
|
-
url = subject.url_for :image => image_url, :crop => [0, 0, 0, 0]
|
117
|
-
expect(url).to eq(image_md5)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "should have smart after halign and valign" do
|
121
|
-
url = subject.url_for :image => image_url, :halign => :left, :valign => :top, :smart => true
|
122
|
-
expect(url).to eq('left/top/smart/' << image_md5)
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should ignore filters if empty" do
|
126
|
-
url = subject.url_for :image => image_url, :filters => []
|
127
|
-
expect(url).to eq(image_md5)
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should have trim without params" do
|
131
|
-
url = subject.url_for :image => image_url, :trim => true
|
132
|
-
expect(url).to eq('trim/' << image_md5)
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should have trim with direction param" do
|
136
|
-
url = subject.url_for :image => image_url, :trim => ['bottom-right']
|
137
|
-
expect(url).to eq('trim:bottom-right/' << image_md5)
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should have trim with direction and tolerance param" do
|
141
|
-
url = subject.url_for :image => image_url, :trim => ['bottom-right', 15]
|
142
|
-
expect(url).to eq('trim:bottom-right:15/' << image_md5)
|
143
|
-
end
|
144
|
-
|
145
|
-
it "should have the trim option as the first one" do
|
146
|
-
url = subject.url_for :image => image_url, :smart => true, :trim => true
|
147
|
-
|
148
|
-
expect(url).to eq('trim/smart/f33af67e41168e80fcc5b00f8bd8061a')
|
149
|
-
end
|
150
|
-
|
151
|
-
|
152
|
-
it "should have the right crop when cropping horizontally and given a left center" do
|
153
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 40, :height => 50, :center => [0, 50]
|
154
|
-
expect(url).to eq('0x0:80x100/40x50/' << image_md5)
|
155
|
-
end
|
156
|
-
|
157
|
-
it "should have the right crop when cropping horizontally and given a right center" do
|
158
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 40, :height => 50, :center => [100, 50]
|
159
|
-
expect(url).to eq('20x0:100x100/40x50/' << image_md5)
|
160
|
-
end
|
161
|
-
|
162
|
-
it "should have the right crop when cropping horizontally and given the actual center" do
|
163
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 40, :height => 50, :center => [50, 50]
|
164
|
-
expect(url).to eq('10x0:90x100/40x50/' << image_md5)
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should have the right crop when cropping vertically and given a top center" do
|
168
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 50, :height => 40, :center => [50, 0]
|
169
|
-
expect(url).to eq('0x0:100x80/50x40/' << image_md5)
|
170
|
-
end
|
171
|
-
|
172
|
-
it "should have the right crop when cropping vertically and given a bottom center" do
|
173
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 50, :height => 40, :center => [50, 100]
|
174
|
-
expect(url).to eq('0x20:100x100/50x40/' << image_md5)
|
175
|
-
end
|
176
|
-
|
177
|
-
it "should have the right crop when cropping vertically and given the actual center" do
|
178
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 50, :height => 40, :center => [50, 50]
|
179
|
-
expect(url).to eq('0x10:100x90/50x40/' << image_md5)
|
180
|
-
end
|
181
|
-
|
182
|
-
it "should have the no crop when not necessary" do
|
183
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 50, :height => 50, :center => [50, 0]
|
184
|
-
expect(url).to eq('50x50/' << image_md5)
|
185
|
-
end
|
186
|
-
|
187
|
-
it "should blow up with a bad center" do
|
188
|
-
expect { subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 50, :height => 40, :center => 50 }.to raise_error(RuntimeError)
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should have no crop with a missing original_height" do
|
192
|
-
url = subject.url_for :image => image_url, :original_width => 100, :width => 50, :height => 40, :center => [50, 50]
|
193
|
-
expect(url).to eq('50x40/' << image_md5)
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should have no crop with a missing original_width" do
|
197
|
-
url = subject.url_for :image => image_url, :original_height => 100, :width => 50, :height => 40, :center => [50, 50]
|
198
|
-
expect(url).to eq('50x40/' << image_md5)
|
199
|
-
end
|
200
|
-
|
201
|
-
it "should have no crop with out a width and height" do
|
202
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :center => [50, 50]
|
203
|
-
expect(url).to eq(image_md5)
|
204
|
-
end
|
205
|
-
|
206
|
-
it "should use the original width with a missing width" do
|
207
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :height => 80, :center => [50, 50]
|
208
|
-
expect(url).to eq('0x10:100x90/0x80/' << image_md5)
|
209
|
-
end
|
210
|
-
|
211
|
-
it "should use the original height with a missing height" do
|
212
|
-
url = subject.url_for :image => image_url,:original_width => 100, :original_height => 100, :width => 80, :center => [50, 50]
|
213
|
-
expect(url).to eq('10x0:90x100/80x0/' << image_md5)
|
214
|
-
end
|
215
|
-
|
216
|
-
it "should have the right crop with a negative width" do
|
217
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => -50, :height => 40, :center => [50, 50]
|
218
|
-
expect(url).to eq('0x10:100x90/-50x40/' << image_md5)
|
219
|
-
end
|
220
|
-
|
221
|
-
it "should have the right crop with a negative height" do
|
222
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => 50, :height => -40, :center => [50, 50]
|
223
|
-
expect(url).to eq('0x10:100x90/50x-40/' << image_md5)
|
224
|
-
end
|
225
|
-
|
226
|
-
it "should have the right crop with a negative height and width" do
|
227
|
-
url = subject.url_for :image => image_url, :original_width => 100, :original_height => 100, :width => -50, :height => -40, :center => [50, 50]
|
228
|
-
expect(url).to eq('0x10:100x90/-50x-40/' << image_md5)
|
229
|
-
end
|
230
|
-
|
231
|
-
it "should handle string values" do
|
232
|
-
url = subject.url_for :image => image_url, :width => '40', :height => '50'
|
233
|
-
expect(url).to eq('40x50/' << image_md5)
|
234
|
-
end
|
235
|
-
|
236
|
-
it "should never mutate its arguments" do
|
237
|
-
opts = {:image => image_url, :width => '500'}
|
238
|
-
subject.url_for opts
|
239
|
-
expect(opts).to eq({:image => image_url, :width => '500'})
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
|
-
describe '#generate' do
|
244
|
-
it "should generate a proper url when only an image url is specified" do
|
245
|
-
url = subject.generate :image => image_url
|
246
|
-
|
247
|
-
expect(url).to eq("/964rCTkAEDtvjy_a572k7kRa0SU=/#{image_url}")
|
248
|
-
end
|
249
|
-
|
250
|
-
it "should create a new instance passing key and keep it" do
|
251
|
-
url = subject.generate :width => 300, :height => 200, :image => image_url
|
252
|
-
|
253
|
-
expect(url).to eq('/TQfyd3H36Z3srcNcLOYiM05YNO8=/300x200/my.domain.com/some/image/url.jpg')
|
254
|
-
end
|
255
|
-
|
256
|
-
it "should create a new instance passing key and keep it" do
|
257
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url
|
258
|
-
|
259
|
-
expect(url).to eq('/YBQEWd3g_WRMnVEG73zfzcr8Zj0=/meta/300x200/my.domain.com/some/image/url.jpg')
|
260
|
-
end
|
261
|
-
|
262
|
-
it "should create a new instance passing key and keep it" do
|
263
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true
|
264
|
-
|
265
|
-
expect(url).to eq('/jP89J0qOWHgPlm_lOA28GtOh5GU=/meta/300x200/smart/my.domain.com/some/image/url.jpg')
|
266
|
-
end
|
267
|
-
|
268
|
-
it "should create a new instance passing key and keep it" do
|
269
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :fit_in => true
|
270
|
-
|
271
|
-
expect(url).to eq('/zrrOh_TtTs4kiLLEQq1w4bcTYdc=/meta/fit-in/300x200/smart/my.domain.com/some/image/url.jpg')
|
272
|
-
end
|
273
|
-
|
274
|
-
it "should create a new instance passing key and keep it" do
|
275
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :fit_in => true, :flip => true
|
276
|
-
|
277
|
-
expect(url).to eq('/4t1XK1KH43cOb1QJ9tU00-W2_k8=/meta/fit-in/-300x200/smart/my.domain.com/some/image/url.jpg')
|
278
|
-
end
|
279
|
-
|
280
|
-
it "should create a new instance passing key and keep it" do
|
281
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :fit_in => true, :flip => true, :flop => true
|
282
|
-
|
283
|
-
expect(url).to eq('/HJnvjZU69PkPOhyZGu-Z3Uc_W_A=/meta/fit-in/-300x-200/smart/my.domain.com/some/image/url.jpg')
|
284
|
-
end
|
285
|
-
|
286
|
-
it "should create a new instance passing key and keep it" do
|
287
|
-
url = subject.generate :filters => ["quality(20)", "brightness(10)"], :image => image_url
|
288
|
-
|
289
|
-
expect(url).to eq('/q0DiFg-5-eFZIqyN3lRoCvg2K0s=/filters:quality(20):brightness(10)/my.domain.com/some/image/url.jpg')
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
describe "#generate :old => true" do
|
294
|
-
|
295
|
-
it "should create a new instance passing key and keep it" do
|
296
|
-
url = subject.generate :width => 300, :height => 200, :image => image_url, :old => true
|
297
|
-
|
298
|
-
expect(url).to eq('/qkLDiIbvtiks0Up9n5PACtmpOfX6dPXw4vP4kJU-jTfyF6y1GJBJyp7CHYh1H3R2/' << image_url)
|
299
|
-
end
|
300
|
-
|
301
|
-
it "should allow thumbor to decrypt it properly" do
|
302
|
-
url = subject.generate :width => 300, :height => 200, :image => image_url, :old => true
|
303
|
-
|
304
|
-
encrypted = url.split('/')[1]
|
305
|
-
|
306
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
307
|
-
|
308
|
-
expect(decrypted["horizontal_flip"]).to be_falsy
|
309
|
-
expect(decrypted["vertical_flip"]).to be_falsy
|
310
|
-
expect(decrypted["smart"]).to be_falsy
|
311
|
-
expect(decrypted["meta"]).to be_falsy
|
312
|
-
expect(decrypted["fit_in"]).to be_falsy
|
313
|
-
expect(decrypted["crop"]["left"]).to eq(0)
|
314
|
-
expect(decrypted["crop"]["top"]).to eq(0)
|
315
|
-
expect(decrypted["crop"]["right"]).to eq(0)
|
316
|
-
expect(decrypted["crop"]["bottom"]).to eq(0)
|
317
|
-
expect(decrypted["valign"]).to eq('middle')
|
318
|
-
expect(decrypted["halign"]).to eq('center')
|
319
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
320
|
-
expect(decrypted["width"]).to eq(300)
|
321
|
-
expect(decrypted["height"]).to eq(200)
|
322
|
-
|
323
|
-
end
|
324
|
-
|
325
|
-
it "should allow thumbor to decrypt it properly with meta" do
|
326
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :old => true
|
327
|
-
|
328
|
-
encrypted = url.split('/')[1]
|
329
|
-
|
330
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
331
|
-
|
332
|
-
expect(decrypted["meta"]).to be_truthy
|
333
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
334
|
-
expect(decrypted["width"]).to eq(300)
|
335
|
-
expect(decrypted["height"]).to eq(200)
|
336
|
-
|
337
|
-
end
|
338
|
-
|
339
|
-
it "should allow thumbor to decrypt it properly with smart" do
|
340
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :old => true
|
341
|
-
|
342
|
-
encrypted = url.split('/')[1]
|
343
|
-
|
344
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
345
|
-
|
346
|
-
expect(decrypted["meta"]).to be_truthy
|
347
|
-
expect(decrypted["smart"]).to be_truthy
|
348
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
349
|
-
expect(decrypted["width"]).to eq(300)
|
350
|
-
expect(decrypted["height"]).to eq(200)
|
351
|
-
|
352
|
-
end
|
353
|
-
|
354
|
-
it "should allow thumbor to decrypt it properly with fit-in" do
|
355
|
-
url = subject.generate :width => 300, :height => 200, :fit_in => true, :image => image_url, :old => true
|
356
|
-
|
357
|
-
encrypted = url.split('/')[1]
|
358
|
-
|
359
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
360
|
-
|
361
|
-
expect(decrypted["fit_in"]).to be_truthy
|
362
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
363
|
-
expect(decrypted["width"]).to eq(300)
|
364
|
-
expect(decrypted["height"]).to eq(200)
|
365
|
-
|
366
|
-
end
|
367
|
-
|
368
|
-
it "should allow thumbor to decrypt it properly with flip" do
|
369
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :old => true
|
370
|
-
|
371
|
-
encrypted = url.split('/')[1]
|
372
|
-
|
373
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
374
|
-
|
375
|
-
expect(decrypted["meta"]).to be_truthy
|
376
|
-
expect(decrypted["smart"]).to be_truthy
|
377
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
378
|
-
expect(decrypted["width"]).to eq(300)
|
379
|
-
expect(decrypted["height"]).to eq(200)
|
380
|
-
decrypted["flip_horizontally"] == true
|
381
|
-
|
382
|
-
end
|
383
|
-
|
384
|
-
it "should allow thumbor to decrypt it properly with flop" do
|
385
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :flop => true, :old => true
|
386
|
-
|
387
|
-
encrypted = url.split('/')[1]
|
388
|
-
|
389
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
390
|
-
|
391
|
-
expect(decrypted["meta"]).to be_truthy
|
392
|
-
expect(decrypted["smart"]).to be_truthy
|
393
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
394
|
-
expect(decrypted["width"]).to eq(300)
|
395
|
-
expect(decrypted["height"]).to eq(200)
|
396
|
-
decrypted["flip_horizontally"] == true
|
397
|
-
decrypted["flip_vertically"] == true
|
398
|
-
|
399
|
-
end
|
400
|
-
|
401
|
-
it "should allow thumbor to decrypt it properly with halign" do
|
402
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :flop => true,
|
403
|
-
:halign => :left, :old => true
|
404
|
-
|
405
|
-
encrypted = url.split('/')[1]
|
406
|
-
|
407
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
408
|
-
|
409
|
-
expect(decrypted["meta"]).to be_truthy
|
410
|
-
expect(decrypted["smart"]).to be_truthy
|
411
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
412
|
-
expect(decrypted["width"]).to eq(300)
|
413
|
-
expect(decrypted["height"]).to eq(200)
|
414
|
-
decrypted["flip_horizontally"] == true
|
415
|
-
decrypted["flip_vertically"] == true
|
416
|
-
decrypted["halign"] == "left"
|
417
|
-
|
418
|
-
end
|
419
|
-
|
420
|
-
it "should allow thumbor to decrypt it properly with valign" do
|
421
|
-
url = subject.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :flop => true,
|
422
|
-
:halign => :left, :valign => :top, :old => true
|
423
|
-
|
424
|
-
encrypted = url.split('/')[1]
|
425
|
-
|
426
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
427
|
-
|
428
|
-
expect(decrypted["meta"]).to be_truthy
|
429
|
-
expect(decrypted["smart"]).to be_truthy
|
430
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
431
|
-
expect(decrypted["width"]).to eq(300)
|
432
|
-
expect(decrypted["height"]).to eq(200)
|
433
|
-
decrypted["flip_horizontally"] == true
|
434
|
-
decrypted["flip_vertically"] == true
|
435
|
-
decrypted["halign"] == "left"
|
436
|
-
decrypted["valign"] == "top"
|
437
|
-
|
438
|
-
end
|
439
|
-
|
440
|
-
it "should allow thumbor to decrypt it properly with cropping" do
|
441
|
-
url = subject.generate :width => 300, :height => 200, :image => image_url, :crop => [10, 20, 30, 40], :old => true
|
442
|
-
|
443
|
-
encrypted = url.split('/')[1]
|
444
|
-
|
445
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
446
|
-
|
447
|
-
expect(decrypted["horizontal_flip"]).to be_falsy
|
448
|
-
expect(decrypted["vertical_flip"]).to be_falsy
|
449
|
-
expect(decrypted["smart"]).to be_falsy
|
450
|
-
expect(decrypted["meta"]).to be_falsy
|
451
|
-
expect(decrypted["crop"]["left"]).to eq(10)
|
452
|
-
expect(decrypted["crop"]["top"]).to eq(20)
|
453
|
-
expect(decrypted["crop"]["right"]).to eq(30)
|
454
|
-
expect(decrypted["crop"]["bottom"]).to eq(40)
|
455
|
-
expect(decrypted["valign"]).to eq('middle')
|
456
|
-
expect(decrypted["halign"]).to eq('center')
|
457
|
-
expect(decrypted["image_hash"]).to eq(image_md5)
|
458
|
-
expect(decrypted["width"]).to eq(300)
|
459
|
-
expect(decrypted["height"]).to eq(200)
|
460
|
-
|
461
|
-
end
|
462
|
-
|
463
|
-
it "should allow thumbor to decrypt it properly with filters" do
|
464
|
-
url = subject.generate :filters => ["quality(20)", "brightness(10)"], :image => image_url, :old => true
|
465
|
-
|
466
|
-
encrypted = url.split('/')[1]
|
467
|
-
|
468
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
469
|
-
|
470
|
-
expect(decrypted["filters"]).to eq("quality(20):brightness(10)")
|
471
|
-
end
|
472
|
-
end
|
473
|
-
|
474
|
-
describe "without security key" do
|
475
|
-
subject { Thumbor::CryptoURL.new nil }
|
476
|
-
it "should generate a unsafe url" do
|
477
|
-
url = subject.generate :image => image_url
|
478
|
-
|
479
|
-
expect(url).to eq("/unsafe/#{image_url}")
|
480
|
-
end
|
481
|
-
end
|
482
|
-
end
|