ruby-thumbor 4.0.1 → 4.0.2
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 +4 -4
- data/README.md +5 -1
- data/lib/thumbor/version.rb +1 -1
- data/spec/thumbor/cascade_spec.rb +126 -126
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1c4062846a0e57d282db5c12f75de306be194a7f85daf6a95b4ad7a45f359590
|
4
|
+
data.tar.gz: c81eecd67d7d8c1d1a210b8061cddab4c36d77562861f67f781ea9734ed07164
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a261f5a06ace027bb296423c3c5e6b63898a107dbb267ac5f90737db9008794e7e2ebc701f3cd7cdc574aab5d48c66d27a555497ca19e4a9ee79fae7757f00e2
|
7
|
+
data.tar.gz: d7848f2f8181d33cf077cde11feae042bccf9d9de397c5f79893401380a046863d72affdf72815b0e4700097670d54d11607ba6b1ffe108f96706d6ba6edcbc5
|
data/README.md
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
# ruby-thumbor
|
1
|
+
# ruby-thumbor
|
2
|
+
[](https://github.com/thumbor/ruby-thumbor/actions)
|
3
|
+
[](https://github.com/thumbor/ruby-thumbor/actions)
|
4
|
+
[](https://rubygems.org/gems/ruby-thumbor)
|
5
|
+
[](https://coveralls.io/github/thumbor/ruby-thumbor?branch=master)
|
2
6
|
|
3
7
|
ruby-thumbor is the Ruby client to the thumbor imaging service (http://github.com/thumbor/thumbor).
|
4
8
|
|
data/lib/thumbor/version.rb
CHANGED
@@ -5,315 +5,315 @@ require 'json'
|
|
5
5
|
require 'ruby-thumbor'
|
6
6
|
|
7
7
|
describe Thumbor::Cascade do
|
8
|
+
subject(:cascade_instance) { described_class.new key, image_url }
|
9
|
+
|
8
10
|
let(:image_url) { 'my.domain.com/some/image/url.jpg' }
|
9
11
|
let(:key) { 'my-security-key' }
|
10
12
|
|
11
|
-
|
12
|
-
|
13
|
-
it 'should raise an error' do
|
14
|
-
expect { subject.god_of_war_crop }.to raise_error(NoMethodError)
|
13
|
+
it 'raises an error' do
|
14
|
+
expect { cascade_instance.god_of_war_crop }.to raise_error(NoMethodError)
|
15
15
|
end
|
16
16
|
|
17
|
-
it '
|
18
|
-
expect(
|
17
|
+
it 'responds to filter methods' do
|
18
|
+
expect(cascade_instance).to respond_to('quality_filter')
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#generate' do
|
22
|
-
it '
|
23
|
-
url =
|
22
|
+
it 'creates an unsafe url' do
|
23
|
+
url = described_class.new(nil, image_url).width(300).height(200).generate
|
24
24
|
expect(url).to eq '/unsafe/300x200/my.domain.com/some/image/url.jpg'
|
25
25
|
end
|
26
26
|
|
27
|
-
it '
|
28
|
-
url =
|
27
|
+
it 'creates an url with debug' do
|
28
|
+
url = cascade_instance.debug(true).height(200).generate
|
29
29
|
expect(url).to eq '/5_eX4HHQYk81HQVkc1gBIAvPbLo=/debug/0x200/my.domain.com/some/image/url.jpg'
|
30
30
|
end
|
31
31
|
|
32
|
-
it '
|
33
|
-
url =
|
32
|
+
it 'creates a new instance with width and height' do
|
33
|
+
url = cascade_instance.width(300).height(200).generate
|
34
34
|
expect(url).to eq '/TQfyd3H36Z3srcNcLOYiM05YNO8=/300x200/my.domain.com/some/image/url.jpg'
|
35
35
|
end
|
36
36
|
|
37
|
-
it '
|
38
|
-
url1 =
|
39
|
-
url2 =
|
37
|
+
it 'is able to change the Thumbor key' do
|
38
|
+
url1 = cascade_instance.width(300).height(200).generate
|
39
|
+
url2 = described_class.new('another-thumbor-key', image_url).width(300).height(200).generate
|
40
40
|
expect(url1).not_to eq url2
|
41
41
|
end
|
42
42
|
|
43
|
-
it '
|
44
|
-
url =
|
43
|
+
it 'creates a new instance with width, height and meta' do
|
44
|
+
url = cascade_instance.width(300).height(200).meta(true).generate
|
45
45
|
expect(url).to eq '/YBQEWd3g_WRMnVEG73zfzcr8Zj0=/meta/300x200/my.domain.com/some/image/url.jpg'
|
46
46
|
end
|
47
47
|
|
48
|
-
it '
|
49
|
-
url =
|
48
|
+
it 'creates a new instance with width, height, meta and smart' do
|
49
|
+
url = cascade_instance.width(300).height(200).meta(true).smart(true).generate
|
50
50
|
expect(url).to eq '/jP89J0qOWHgPlm_lOA28GtOh5GU=/meta/300x200/smart/my.domain.com/some/image/url.jpg'
|
51
51
|
end
|
52
52
|
|
53
|
-
it '
|
54
|
-
url =
|
53
|
+
it 'creates a new instance with width, height, meta, smart and fit_in' do
|
54
|
+
url = cascade_instance.width(300).height(200).meta(true).smart(true).fit_in(true).generate
|
55
55
|
expect(url).to eq '/zrrOh_TtTs4kiLLEQq1w4bcTYdc=/meta/fit-in/300x200/smart/my.domain.com/some/image/url.jpg'
|
56
56
|
end
|
57
57
|
|
58
|
-
it '
|
59
|
-
url =
|
58
|
+
it 'creates a new instance with width, height, meta, smart, fit_in and flip' do
|
59
|
+
url = cascade_instance.width(300).height(200).meta(true).smart(true).fit_in(true).flip(true).generate
|
60
60
|
expect(url).to eq '/4t1XK1KH43cOb1QJ9tU00-W2_k8=/meta/fit-in/-300x200/smart/my.domain.com/some/image/url.jpg'
|
61
61
|
end
|
62
62
|
|
63
|
-
it '
|
64
|
-
url =
|
63
|
+
it 'creates a new instance with width, height, meta, smart, fit_in, flip and flop' do
|
64
|
+
url = cascade_instance.width(300).height(200).meta(true).smart(true).fit_in(true).flip(true).flop(true).generate
|
65
65
|
expect(url).to eq '/HJnvjZU69PkPOhyZGu-Z3Uc_W_A=/meta/fit-in/-300x-200/smart/my.domain.com/some/image/url.jpg'
|
66
66
|
end
|
67
67
|
|
68
|
-
it '
|
69
|
-
url =
|
68
|
+
it 'creates a new instance with quality and brigthness filter' do
|
69
|
+
url = cascade_instance.quality_filter(20).brightness_filter(10).generate
|
70
70
|
expect(url).to eq '/q0DiFg-5-eFZIqyN3lRoCvg2K0s=/filters:quality(20):brightness(10)/my.domain.com/some/image/url.jpg'
|
71
71
|
end
|
72
72
|
|
73
|
-
it '
|
74
|
-
url =
|
73
|
+
it 'returns just the image hash if no arguments passed' do
|
74
|
+
url = cascade_instance.generate
|
75
75
|
expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
|
76
76
|
end
|
77
77
|
|
78
|
-
it '
|
79
|
-
expect {
|
78
|
+
it 'raises if no image passed' do
|
79
|
+
expect { described_class.new.generate }.to raise_error(RuntimeError)
|
80
80
|
end
|
81
81
|
|
82
|
-
it '
|
83
|
-
url =
|
82
|
+
it 'returns proper url for width-only' do
|
83
|
+
url = cascade_instance.width(300).generate
|
84
84
|
expect(url).to eq '/eFwrBWryxtRw9hDSbQPhi5iLpo8=/300x0/my.domain.com/some/image/url.jpg'
|
85
85
|
end
|
86
86
|
|
87
|
-
it '
|
88
|
-
url =
|
87
|
+
it 'returns proper url for height-only' do
|
88
|
+
url = cascade_instance.height(300).generate
|
89
89
|
expect(url).to eq '/-VGIgp7g8cMKcfF2gFK9ZpmB_5w=/0x300/my.domain.com/some/image/url.jpg'
|
90
90
|
end
|
91
91
|
|
92
|
-
it '
|
93
|
-
url =
|
92
|
+
it 'returns proper url for width and height' do
|
93
|
+
url = cascade_instance.width(200).height(300).generate
|
94
94
|
expect(url).to eq '/TrM0qqfcivb6VxS3Hxlxn43W21k=/200x300/my.domain.com/some/image/url.jpg'
|
95
95
|
end
|
96
96
|
|
97
|
-
it '
|
98
|
-
url =
|
97
|
+
it 'returns proper smart url' do
|
98
|
+
url = cascade_instance.width(200).height(300).smart(true).generate
|
99
99
|
expect(url).to eq '/hdzhxXzK45DzNTru5urV6x6xxSs=/200x300/smart/my.domain.com/some/image/url.jpg'
|
100
100
|
end
|
101
101
|
|
102
|
-
it '
|
103
|
-
url =
|
102
|
+
it 'returns proper fit-in url' do
|
103
|
+
url = cascade_instance.width(200).height(300).fit_in(true).generate
|
104
104
|
expect(url).to eq '/LOv6ArMOJA2VRpfMQjjs4xSyZpM=/fit-in/200x300/my.domain.com/some/image/url.jpg'
|
105
105
|
end
|
106
106
|
|
107
|
-
it '
|
108
|
-
url =
|
107
|
+
it 'returns proper adaptive-fit-in url' do
|
108
|
+
url = cascade_instance.width(200).height(300).adaptive_fit_in(true).generate
|
109
109
|
expect(url).to eq '/V2xmSmQZm4i5-0Flx8iuRtawOkg=/adaptive-fit-in/200x300/my.domain.com/some/image/url.jpg'
|
110
110
|
end
|
111
111
|
|
112
|
-
it '
|
113
|
-
url =
|
112
|
+
it 'returns proper full-fit-in url' do
|
113
|
+
url = cascade_instance.width(200).height(300).full_fit_in(true).generate
|
114
114
|
expect(url).to eq '/geXhR7ZFxztQTsKzmkDxYCX-HHg=/full-fit-in/200x300/my.domain.com/some/image/url.jpg'
|
115
115
|
end
|
116
116
|
|
117
|
-
it '
|
118
|
-
url =
|
117
|
+
it 'returns proper adaptive-full-fit-in url' do
|
118
|
+
url = cascade_instance.width(200).height(300).adaptive_full_fit_in(true).generate
|
119
119
|
expect(url).to eq '/jlUfjdC-6rG6jmuHgFp6eKgPy2g=/adaptive-full-fit-in/200x300/my.domain.com/some/image/url.jpg'
|
120
120
|
end
|
121
121
|
|
122
122
|
%i[fit_in full_fit_in].each do |fit|
|
123
|
-
it "
|
124
|
-
|
125
|
-
expect {
|
123
|
+
it "raises error when using #{fit} without width or height" do
|
124
|
+
cascade_instance.send(fit, true)
|
125
|
+
expect { cascade_instance.generate }.to raise_error(ArgumentError)
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
129
|
-
it '
|
130
|
-
url =
|
129
|
+
it 'returns proper flip url if no width and height' do
|
130
|
+
url = cascade_instance.flip(true).generate
|
131
131
|
expect(url).to eq '/rlI4clPR-p-PR2QAxj5ZWiTfvH4=/-0x0/my.domain.com/some/image/url.jpg'
|
132
132
|
end
|
133
133
|
|
134
|
-
it '
|
135
|
-
url =
|
134
|
+
it 'returns proper flop url if no width and height' do
|
135
|
+
url = cascade_instance.flop(true).generate
|
136
136
|
expect(url).to eq '/-4dmGj-TwIEqTAL9_9yEqUM8cks=/0x-0/my.domain.com/some/image/url.jpg'
|
137
137
|
end
|
138
138
|
|
139
|
-
it '
|
140
|
-
url =
|
139
|
+
it 'returns proper flip-flop url if no width and height' do
|
140
|
+
url = cascade_instance.flip(true).flop(true).generate
|
141
141
|
expect(url).to eq '/FnMxpQMmxiMpdG219Dsj8pD_4Xc=/-0x-0/my.domain.com/some/image/url.jpg'
|
142
142
|
end
|
143
143
|
|
144
|
-
it '
|
145
|
-
url =
|
144
|
+
it 'returns proper flip url if width' do
|
145
|
+
url = cascade_instance.width(300).flip(true).generate
|
146
146
|
expect(url).to eq '/ccr2PoSYcTEGL4_Wzt4u3wWVRKU=/-300x0/my.domain.com/some/image/url.jpg'
|
147
147
|
end
|
148
148
|
|
149
|
-
it '
|
150
|
-
url =
|
149
|
+
it 'returns proper flop url if height' do
|
150
|
+
url = cascade_instance.height(300).flop(true).generate
|
151
151
|
expect(url).to eq '/R5K91tkyNgXO65F6E0txgA6C9lY=/0x-300/my.domain.com/some/image/url.jpg'
|
152
152
|
end
|
153
153
|
|
154
|
-
it '
|
155
|
-
url =
|
154
|
+
it 'returns horizontal align' do
|
155
|
+
url = cascade_instance.halign(:left).generate
|
156
156
|
expect(url).to eq '/GTJE3wUt3sURik0O9Nae8sfI928=/left/my.domain.com/some/image/url.jpg'
|
157
157
|
end
|
158
158
|
|
159
|
-
it '
|
160
|
-
url =
|
159
|
+
it 'does not return horizontal align if it is center' do
|
160
|
+
url = cascade_instance.halign(:center).generate
|
161
161
|
expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
|
162
162
|
end
|
163
163
|
|
164
|
-
it '
|
165
|
-
url =
|
164
|
+
it 'returns vertical align' do
|
165
|
+
url = cascade_instance.valign(:top).generate
|
166
166
|
expect(url).to eq '/1QQo5ihObuhgwl95--Z3g78vjiE=/top/my.domain.com/some/image/url.jpg'
|
167
167
|
end
|
168
168
|
|
169
|
-
it '
|
170
|
-
url =
|
169
|
+
it 'does not return vertical align if it is middle' do
|
170
|
+
url = cascade_instance.valign(:middle).generate
|
171
171
|
expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
|
172
172
|
end
|
173
173
|
|
174
|
-
it '
|
175
|
-
url =
|
174
|
+
it 'returns halign and valign properly' do
|
175
|
+
url = cascade_instance.halign(:left).valign(:top).generate
|
176
176
|
expect(url).to eq '/yA2rmtWv_uzHd9klz5OuMIZ5auI=/left/top/my.domain.com/some/image/url.jpg'
|
177
177
|
end
|
178
178
|
|
179
|
-
it '
|
180
|
-
url =
|
179
|
+
it 'returns meta properly' do
|
180
|
+
url = cascade_instance.meta(true).generate
|
181
181
|
expect(url).to eq '/WvIJFDJDePgIl5hZcLgtrzIPxfY=/meta/my.domain.com/some/image/url.jpg'
|
182
182
|
end
|
183
183
|
|
184
|
-
it '
|
185
|
-
url =
|
184
|
+
it 'returns proper crop url when param is array' do
|
185
|
+
url = cascade_instance.crop([10, 20, 30, 40]).generate
|
186
186
|
expect(url).to eq '/QcnhqNfHwiP6BHLbD6UvneX7K28=/10x20:30x40/my.domain.com/some/image/url.jpg'
|
187
187
|
end
|
188
188
|
|
189
|
-
it '
|
190
|
-
url =
|
189
|
+
it 'returns proper crop url' do
|
190
|
+
url = cascade_instance.crop(10, 20, 30, 40).generate
|
191
191
|
expect(url).to eq '/QcnhqNfHwiP6BHLbD6UvneX7K28=/10x20:30x40/my.domain.com/some/image/url.jpg'
|
192
192
|
end
|
193
193
|
|
194
|
-
it '
|
195
|
-
url =
|
194
|
+
it 'ignores crop if all zeros' do
|
195
|
+
url = cascade_instance.crop(0, 0, 0, 0).generate
|
196
196
|
expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
|
197
197
|
end
|
198
198
|
|
199
|
-
it '
|
200
|
-
url =
|
199
|
+
it 'has smart after halign and valign' do
|
200
|
+
url = cascade_instance.halign(:left).valign(:top).smart(true).generate
|
201
201
|
expect(url).to eq '/KS6mVuzlGE3hJ75n3JUonfGgSFM=/left/top/smart/my.domain.com/some/image/url.jpg'
|
202
202
|
end
|
203
203
|
|
204
|
-
it '
|
205
|
-
url =
|
204
|
+
it 'has quality filter' do
|
205
|
+
url = cascade_instance.quality_filter(20).generate
|
206
206
|
expect(url).to eq '/NyA-is4NojxiRqo0NcmJDhB6GTs=/filters:quality(20)/my.domain.com/some/image/url.jpg'
|
207
207
|
end
|
208
208
|
|
209
|
-
it '
|
210
|
-
url =
|
209
|
+
it 'has brightness filter' do
|
210
|
+
url = cascade_instance.brightness_filter(30).generate
|
211
211
|
expect(url).to eq '/oXDmnGD7vQV-rXcj8kCl1tcS3jc=/filters:brightness(30)/my.domain.com/some/image/url.jpg'
|
212
212
|
end
|
213
213
|
|
214
|
-
it '
|
215
|
-
url =
|
214
|
+
it 'has 2 filters' do
|
215
|
+
url = cascade_instance.brightness_filter(30).quality_filter(20).generate
|
216
216
|
expect(url).to eq '/SW9o4xQG1QAzE69WzEzarL_G3MI=/filters:brightness(30):quality(20)/my.domain.com/some/image/url.jpg'
|
217
217
|
end
|
218
218
|
|
219
|
-
it '
|
220
|
-
url =
|
219
|
+
it 'escapes url args' do
|
220
|
+
url = cascade_instance.watermark_filter('http://my-server.com/image.png', 30).quality_filter(20).generate
|
221
221
|
expect(url).to eq '/4b9kwg0-zsojf7Ed01TPKPYOel4=/filters:watermark(http%3A%2F%2Fmy-server.com%2Fimage.png,30):quality(20)/my.domain.com/some/image/url.jpg'
|
222
222
|
end
|
223
223
|
|
224
|
-
it '
|
225
|
-
url =
|
224
|
+
it 'has trim without params' do
|
225
|
+
url = cascade_instance.trim.generate
|
226
226
|
expect(url).to eq '/w23BC0dUiYBFrUnuoYJe8XROuyw=/trim/my.domain.com/some/image/url.jpg'
|
227
227
|
end
|
228
228
|
|
229
|
-
it '
|
230
|
-
url =
|
229
|
+
it 'has trim with direction param' do
|
230
|
+
url = cascade_instance.trim('bottom-right').generate
|
231
231
|
expect(url).to eq '/kXPwSmqEvPFQezgzBCv9BtPWmBY=/trim:bottom-right/my.domain.com/some/image/url.jpg'
|
232
232
|
end
|
233
233
|
|
234
|
-
it '
|
235
|
-
url =
|
234
|
+
it 'has trim with direction and tolerance param' do
|
235
|
+
url = cascade_instance.trim('bottom-right', 15).generate
|
236
236
|
expect(url).to eq '/TUCEIhtWfI1Uv9zjavCSl_i0A_8=/trim:bottom-right:15/my.domain.com/some/image/url.jpg'
|
237
237
|
end
|
238
238
|
|
239
|
-
it '
|
240
|
-
url =
|
239
|
+
it 'has the right crop when cropping horizontally and given a left center' do
|
240
|
+
url = cascade_instance.original_width(100).original_height(100).width(40).height(50).center(0, 50).generate
|
241
241
|
expect(url).to eq '/SZIT3w4Qgebv5DuVJ8G1IH1mkCU=/0x0:80x100/40x50/my.domain.com/some/image/url.jpg'
|
242
242
|
end
|
243
243
|
|
244
|
-
it '
|
245
|
-
url =
|
244
|
+
it 'has the right crop when cropping horizontally and given a right center' do
|
245
|
+
url = cascade_instance.original_width(100).original_height(100).width(40).height(50).center(100, 50).generate
|
246
246
|
expect(url).to eq '/NEtCYehaISE7qR3zFj15CxnZoCs=/20x0:100x100/40x50/my.domain.com/some/image/url.jpg'
|
247
247
|
end
|
248
248
|
|
249
|
-
it '
|
250
|
-
url =
|
249
|
+
it 'has the right crop when cropping horizontally and given the actual center' do
|
250
|
+
url = cascade_instance.original_width(100).original_height(100).width(40).height(50).center(50, 50).generate
|
251
251
|
expect(url).to eq '/JLH65vJTu6d-cXBmqe5hYoSD4ho=/10x0:90x100/40x50/my.domain.com/some/image/url.jpg'
|
252
252
|
end
|
253
253
|
|
254
|
-
it '
|
255
|
-
url =
|
254
|
+
it 'has the right crop when cropping vertically and given a top center' do
|
255
|
+
url = cascade_instance.original_width(100).original_height(100).width(50).height(40).center(50, 0).generate
|
256
256
|
expect(url).to eq '/FIMZcLatW6bjgSRH9xTkEwUZAZ8=/0x0:100x80/50x40/my.domain.com/some/image/url.jpg'
|
257
257
|
end
|
258
258
|
|
259
|
-
it '
|
260
|
-
url =
|
259
|
+
it 'has the right crop when cropping vertically and given a bottom center' do
|
260
|
+
url = cascade_instance.original_width(100).original_height(100).width(50).height(40).center(50, 100).generate
|
261
261
|
expect(url).to eq '/9Ud0sVo6i9DLOjlKbQP_4JXgFmA=/0x20:100x100/50x40/my.domain.com/some/image/url.jpg'
|
262
262
|
end
|
263
263
|
|
264
|
-
it '
|
265
|
-
url =
|
264
|
+
it 'has the right crop when cropping vertically and given the actual center' do
|
265
|
+
url = cascade_instance.original_width(100).original_height(100).width(50).height(40).center(50, 50).generate
|
266
266
|
expect(url).to eq '/WejLJn8djJLn7DkMUq3S0zZCvZE=/0x10:100x90/50x40/my.domain.com/some/image/url.jpg'
|
267
267
|
end
|
268
268
|
|
269
|
-
it '
|
270
|
-
url =
|
269
|
+
it 'has the no crop when not necessary' do
|
270
|
+
url = cascade_instance.original_width(100).original_height(100).width(50).height(50).center(50, 0).generate
|
271
271
|
expect(url).to eq '/trIjfr513nkGkCpKXK6qgox2jPA=/50x50/my.domain.com/some/image/url.jpg'
|
272
272
|
end
|
273
273
|
|
274
|
-
it '
|
274
|
+
it 'blows up with a bad center' do
|
275
275
|
expect do
|
276
|
-
|
276
|
+
cascade_instance.original_width(100).original_height(100).width(50).height(50).center(50).generate
|
277
277
|
end.to raise_error(RuntimeError)
|
278
278
|
end
|
279
279
|
|
280
|
-
it '
|
281
|
-
url =
|
280
|
+
it 'has no crop with a missing original_height' do
|
281
|
+
url = cascade_instance.original_width(100).width(50).height(40).center(50, 0).generate
|
282
282
|
expect(url).to eq '/veYlY0msKmemAaXpeav2kCNftmU=/50x40/my.domain.com/some/image/url.jpg'
|
283
283
|
end
|
284
284
|
|
285
|
-
it '
|
286
|
-
url =
|
285
|
+
it 'has no crop with a missing original_width' do
|
286
|
+
url = cascade_instance.original_height(100).width(50).height(40).center(50, 0).generate
|
287
287
|
expect(url).to eq '/veYlY0msKmemAaXpeav2kCNftmU=/50x40/my.domain.com/some/image/url.jpg'
|
288
288
|
end
|
289
289
|
|
290
|
-
it '
|
291
|
-
url =
|
290
|
+
it 'has no crop with out a width and height' do
|
291
|
+
url = cascade_instance.original_width(100).original_height(100).center(50, 50).generate
|
292
292
|
expect(url).to eq '/964rCTkAEDtvjy_a572k7kRa0SU=/my.domain.com/some/image/url.jpg'
|
293
293
|
end
|
294
294
|
|
295
|
-
it '
|
296
|
-
url =
|
295
|
+
it 'uses the original width with a missing width' do
|
296
|
+
url = cascade_instance.original_width(100).original_height(100).height(80).center(50, 50).generate
|
297
297
|
expect(url).to eq '/02BNIIJ9NYNV9Q03JHPtlP0DIDg=/0x10:100x90/0x80/my.domain.com/some/image/url.jpg'
|
298
298
|
end
|
299
299
|
|
300
|
-
it '
|
301
|
-
url =
|
300
|
+
it 'uses the original height with a missing height' do
|
301
|
+
url = cascade_instance.original_width(100).original_height(100).width(80).center(50, 50).generate
|
302
302
|
expect(url).to eq '/0XL5BmMi3vlJQfw6aGOVW-M1vVI=/10x0:90x100/80x0/my.domain.com/some/image/url.jpg'
|
303
303
|
end
|
304
304
|
|
305
|
-
it '
|
306
|
-
url =
|
305
|
+
it 'has the right crop with a negative width' do
|
306
|
+
url = cascade_instance.original_width(100).original_height(100).width(-50).height(40).center(50, 50).generate
|
307
307
|
expect(url).to eq '/IuRNPlFlpTVol45bDkOm2PGvneo=/0x10:100x90/-50x40/my.domain.com/some/image/url.jpg'
|
308
308
|
end
|
309
309
|
|
310
|
-
it '
|
311
|
-
url =
|
310
|
+
it 'has the right crop with a negative height' do
|
311
|
+
url = cascade_instance.original_width(100).original_height(100).width(50).height(-40).center(50, 50).generate
|
312
312
|
expect(url).to eq '/-8IhWGEeXaY1uv945i9EHLVjwuk=/0x10:100x90/50x-40/my.domain.com/some/image/url.jpg'
|
313
313
|
end
|
314
314
|
|
315
|
-
it '
|
316
|
-
url =
|
315
|
+
it 'has the right crop with a negative height and width' do
|
316
|
+
url = cascade_instance.original_width(100).original_height(100).width(-50).height(-40).center(50, 50).generate
|
317
317
|
expect(url).to eq '/lfjGLTTEaW_Rcvc1q0ZhfYup2jg=/0x10:100x90/-50x-40/my.domain.com/some/image/url.jpg'
|
318
318
|
end
|
319
319
|
end
|
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.0.
|
4
|
+
version: 4.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bernardo Heynemann
|
@@ -11,6 +11,20 @@ bindir: bin
|
|
11
11
|
cert_chain: []
|
12
12
|
date: 2022-01-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: code-scanning-rubocop
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: 0.5.0
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 0.5.0
|
14
28
|
- !ruby/object:Gem::Dependency
|
15
29
|
name: rake
|
16
30
|
requirement: !ruby/object:Gem::Requirement
|