ruby-thumbor 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +19 -6
- data/lib/ruby-thumbor.rb +9 -142
- data/lib/thumbor/cascade.rb +70 -0
- data/lib/thumbor/crypto_url.rb +146 -0
- data/lib/thumbor/version.rb +3 -0
- data/spec/spec_helper.rb +15 -2
- data/spec/thumbor/cascade_spec.rb +392 -0
- data/spec/thumbor/crypto_url_spec.rb +371 -0
- data/spec/util/thumbor.rb +7 -0
- metadata +25 -49
- data/.gemtest +0 -0
- data/History.txt +0 -19
- data/Manifest.txt +0 -13
- data/PostInstall.txt +0 -3
- data/Rakefile +0 -21
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/spec/ruby-thumbor_spec.rb +0 -436
- data/spec/spec.opts +0 -1
- data/tasks/rspec.rake +0 -1
@@ -0,0 +1,7 @@
|
|
1
|
+
def decrypt_in_thumbor(str)
|
2
|
+
command = "python -c 'from thumbor.crypto import Cryptor; cr = Cryptor(\"my-security-keymy\"); print cr.decrypt(\"" << str << "\")'"
|
3
|
+
result = Array.new
|
4
|
+
IO.popen(command) { |f| result.push(f.gets) }
|
5
|
+
result = result.join('').strip
|
6
|
+
JSON.parse(result.gsub('"', "@@@").gsub("'", '"').gsub("@@@", '\\"').gsub('True', 'true').gsub('False', 'false').gsub('None', 'null'))
|
7
|
+
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: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,32 +9,16 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '3.10'
|
22
|
-
type: :development
|
23
|
-
prerelease: false
|
24
|
-
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.10'
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: newgem
|
15
|
+
name: rspec
|
32
16
|
requirement: !ruby/object:Gem::Requirement
|
33
17
|
none: false
|
34
18
|
requirements:
|
35
19
|
- - ! '>='
|
36
20
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
21
|
+
version: '0'
|
38
22
|
type: :development
|
39
23
|
prerelease: false
|
40
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -42,51 +26,42 @@ dependencies:
|
|
42
26
|
requirements:
|
43
27
|
- - ! '>='
|
44
28
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
29
|
+
version: '0'
|
46
30
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
31
|
+
name: simplecov
|
48
32
|
requirement: !ruby/object:Gem::Requirement
|
49
33
|
none: false
|
50
34
|
requirements:
|
51
|
-
- -
|
35
|
+
- - ! '>='
|
52
36
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
37
|
+
version: '0'
|
54
38
|
type: :development
|
55
39
|
prerelease: false
|
56
40
|
version_requirements: !ruby/object:Gem::Requirement
|
57
41
|
none: false
|
58
42
|
requirements:
|
59
|
-
- -
|
43
|
+
- - ! '>='
|
60
44
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
45
|
+
version: '0'
|
62
46
|
description: ruby-thumbor is the client to the thumbor imaging service (http://github.com/globocom/thumbor).
|
63
47
|
email:
|
64
48
|
- heynemann@gmail.com
|
65
49
|
executables: []
|
66
50
|
extensions: []
|
67
|
-
extra_rdoc_files:
|
68
|
-
- History.txt
|
69
|
-
- Manifest.txt
|
70
|
-
- PostInstall.txt
|
71
|
-
- README.rdoc
|
51
|
+
extra_rdoc_files: []
|
72
52
|
files:
|
73
|
-
- History.txt
|
74
|
-
- Manifest.txt
|
75
|
-
- PostInstall.txt
|
76
|
-
- README.rdoc
|
77
|
-
- Rakefile
|
78
53
|
- lib/ruby-thumbor.rb
|
79
|
-
-
|
80
|
-
-
|
81
|
-
-
|
82
|
-
-
|
83
|
-
- spec/spec.opts
|
54
|
+
- lib/thumbor/cascade.rb
|
55
|
+
- lib/thumbor/crypto_url.rb
|
56
|
+
- lib/thumbor/version.rb
|
57
|
+
- README.rdoc
|
84
58
|
- spec/spec_helper.rb
|
85
|
-
-
|
86
|
-
- .
|
59
|
+
- spec/thumbor/cascade_spec.rb
|
60
|
+
- spec/thumbor/crypto_url_spec.rb
|
61
|
+
- spec/util/thumbor.rb
|
87
62
|
homepage: http://github.com/heynemann/ruby-thumbor
|
88
63
|
licenses: []
|
89
|
-
post_install_message:
|
64
|
+
post_install_message:
|
90
65
|
rdoc_options:
|
91
66
|
- --main
|
92
67
|
- README.rdoc
|
@@ -98,9 +73,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
73
|
- - ! '>='
|
99
74
|
- !ruby/object:Gem::Version
|
100
75
|
version: '0'
|
101
|
-
segments:
|
102
|
-
- 0
|
103
|
-
hash: 632787892230243515
|
104
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
77
|
none: false
|
106
78
|
requirements:
|
@@ -108,9 +80,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
80
|
- !ruby/object:Gem::Version
|
109
81
|
version: '0'
|
110
82
|
requirements: []
|
111
|
-
rubyforge_project:
|
83
|
+
rubyforge_project:
|
112
84
|
rubygems_version: 1.8.24
|
113
85
|
signing_key:
|
114
86
|
specification_version: 3
|
115
87
|
summary: ruby-thumbor is the client to the thumbor imaging service (http://github.com/globocom/thumbor).
|
116
|
-
test_files:
|
88
|
+
test_files:
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
- spec/thumbor/cascade_spec.rb
|
91
|
+
- spec/thumbor/crypto_url_spec.rb
|
92
|
+
- spec/util/thumbor.rb
|
data/.gemtest
DELETED
File without changes
|
data/History.txt
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
=== 0.7.0 2012-06-14
|
2
|
-
|
3
|
-
* Bugfixes:
|
4
|
-
* Ignore filters option to #generate if the array is empty
|
5
|
-
|
6
|
-
=== 0.6.0 2012-03-14
|
7
|
-
|
8
|
-
* 1 major enhancement:
|
9
|
-
* Support for filters in the urls
|
10
|
-
|
11
|
-
=== 0.5.0 2011-04-19
|
12
|
-
|
13
|
-
* 1 major enhancement:
|
14
|
-
* Fit-in support in the url
|
15
|
-
|
16
|
-
=== 0.0.1 2011-04-02
|
17
|
-
|
18
|
-
* 1 major enhancement:
|
19
|
-
* Initial release
|
data/Manifest.txt
DELETED
data/PostInstall.txt
DELETED
data/Rakefile
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'hoe', '>= 2.1.0'
|
3
|
-
require 'hoe'
|
4
|
-
require 'fileutils'
|
5
|
-
require './lib/ruby-thumbor'
|
6
|
-
|
7
|
-
Hoe.plugin :newgem
|
8
|
-
# Hoe.plugin :website
|
9
|
-
# Hoe.plugin :cucumberfeatures
|
10
|
-
|
11
|
-
# Generate all the Rake tasks
|
12
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
13
|
-
$hoe = Hoe.spec 'ruby-thumbor' do
|
14
|
-
self.developer 'Bernardo Heynemann', 'heynemann@gmail.com'
|
15
|
-
self.post_install_message = 'PostInstall.txt'
|
16
|
-
self.rubyforge_name = 'ruby-thumbor'
|
17
|
-
end
|
18
|
-
|
19
|
-
require 'newgem/tasks'
|
20
|
-
Dir['tasks/**/*.rake'].each { |t| import t }
|
21
|
-
|
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/ruby-thumbor.rb'}"
|
9
|
-
puts "Loading ruby-thumbor gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|
data/spec/ruby-thumbor_spec.rb
DELETED
@@ -1,436 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper.rb'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
image_url = 'my.domain.com/some/image/url.jpg'
|
5
|
-
image_md5 = 'f33af67e41168e80fcc5b00f8bd8061a'
|
6
|
-
key = 'my-security-key'
|
7
|
-
|
8
|
-
def decrypt_in_thumbor(str)
|
9
|
-
command = "python -c 'from thumbor.crypto import Cryptor; cr = Cryptor(\"my-security-keymy\"); print cr.decrypt(\"" << str << "\")'"
|
10
|
-
result = Array.new
|
11
|
-
IO.popen(command) { |f| result.push(f.gets) }
|
12
|
-
result = result.join('').strip
|
13
|
-
JSON.parse(result.gsub('"', "@@@").gsub("'", '"').gsub("@@@", '\\"').gsub('True', 'true').gsub('False', 'false'))
|
14
|
-
end
|
15
|
-
|
16
|
-
describe Thumbor::CryptoURL, "#new" do
|
17
|
-
|
18
|
-
it "should create a new instance passing key and keep it" do
|
19
|
-
crypto = Thumbor::CryptoURL.new key
|
20
|
-
crypto.computed_key.should == 'my-security-keym'
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
describe Thumbor::CryptoURL, "#url_for" do
|
26
|
-
it "should return just the image hash if no arguments passed" do
|
27
|
-
crypto = Thumbor::CryptoURL.new key
|
28
|
-
|
29
|
-
url = crypto.url_for :image => image_url
|
30
|
-
|
31
|
-
url.should == image_md5
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should raise if no image passed" do
|
35
|
-
crypto = Thumbor::CryptoURL.new key
|
36
|
-
|
37
|
-
expect { crypto.url_for Hash.new }.to raise_error(RuntimeError)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should return proper url for width-only" do
|
41
|
-
crypto = Thumbor::CryptoURL.new key
|
42
|
-
|
43
|
-
url = crypto.url_for :image => image_url, :width => 300
|
44
|
-
|
45
|
-
url.should == '300x0/' << image_md5
|
46
|
-
end
|
47
|
-
|
48
|
-
it "should return proper url for height-only" do
|
49
|
-
crypto = Thumbor::CryptoURL.new key
|
50
|
-
|
51
|
-
url = crypto.url_for :image => image_url, :height => 300
|
52
|
-
|
53
|
-
url.should == '0x300/' << image_md5
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should return proper url for width and height" do
|
57
|
-
crypto = Thumbor::CryptoURL.new key
|
58
|
-
|
59
|
-
url = crypto.url_for :image => image_url, :width => 200, :height => 300
|
60
|
-
|
61
|
-
url.should == '200x300/' << image_md5
|
62
|
-
end
|
63
|
-
|
64
|
-
it "should return proper smart url" do
|
65
|
-
crypto = Thumbor::CryptoURL.new key
|
66
|
-
|
67
|
-
url = crypto.url_for :image => image_url, :width => 200, :height => 300, :smart => true
|
68
|
-
|
69
|
-
url.should == '200x300/smart/' << image_md5
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should return proper fit-in url" do
|
73
|
-
crypto = Thumbor::CryptoURL.new key
|
74
|
-
|
75
|
-
url = crypto.url_for :image => image_url, :width => 200, :height => 300, :fit_in => true
|
76
|
-
|
77
|
-
url.should == 'fit-in/200x300/' << image_md5
|
78
|
-
end
|
79
|
-
|
80
|
-
it "should return proper flip url if no width and height" do
|
81
|
-
crypto = Thumbor::CryptoURL.new key
|
82
|
-
|
83
|
-
url = crypto.url_for :image => image_url, :flip => true
|
84
|
-
|
85
|
-
url.should == '-0x0/' << image_md5
|
86
|
-
end
|
87
|
-
|
88
|
-
it "should return proper flop url if no width and height" do
|
89
|
-
crypto = Thumbor::CryptoURL.new key
|
90
|
-
|
91
|
-
url = crypto.url_for :image => image_url, :flop => true
|
92
|
-
|
93
|
-
url.should == '0x-0/' << image_md5
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should return proper flip-flop url if no width and height" do
|
97
|
-
crypto = Thumbor::CryptoURL.new key
|
98
|
-
|
99
|
-
url = crypto.url_for :image => image_url, :flip => true, :flop => true
|
100
|
-
|
101
|
-
url.should == '-0x-0/' << image_md5
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should return proper flip url if width" do
|
105
|
-
crypto = Thumbor::CryptoURL.new key
|
106
|
-
|
107
|
-
url = crypto.url_for :image => image_url, :width => 300, :flip => true
|
108
|
-
|
109
|
-
url.should == '-300x0/' << image_md5
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should return proper flop url if height" do
|
113
|
-
crypto = Thumbor::CryptoURL.new key
|
114
|
-
|
115
|
-
url = crypto.url_for :image => image_url, :height => 300, :flop => true
|
116
|
-
|
117
|
-
url.should == '0x-300/' << image_md5
|
118
|
-
end
|
119
|
-
|
120
|
-
it "should return horizontal align" do
|
121
|
-
crypto = Thumbor::CryptoURL.new key
|
122
|
-
|
123
|
-
url = crypto.url_for :image => image_url, :halign => :left
|
124
|
-
|
125
|
-
url.should == 'left/' << image_md5
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should not return horizontal align if it is center" do
|
129
|
-
crypto = Thumbor::CryptoURL.new key
|
130
|
-
|
131
|
-
url = crypto.url_for :image => image_url, :halign => :center
|
132
|
-
|
133
|
-
url.should == image_md5
|
134
|
-
end
|
135
|
-
|
136
|
-
it "should return vertical align" do
|
137
|
-
crypto = Thumbor::CryptoURL.new key
|
138
|
-
|
139
|
-
url = crypto.url_for :image => image_url, :valign => :top
|
140
|
-
|
141
|
-
url.should == 'top/' << image_md5
|
142
|
-
end
|
143
|
-
|
144
|
-
it "should not return vertical align if it is middle" do
|
145
|
-
crypto = Thumbor::CryptoURL.new key
|
146
|
-
|
147
|
-
url = crypto.url_for :image => image_url, :valign => :middle
|
148
|
-
|
149
|
-
url.should == image_md5
|
150
|
-
end
|
151
|
-
|
152
|
-
it "should return halign and valign properly" do
|
153
|
-
crypto = Thumbor::CryptoURL.new key
|
154
|
-
|
155
|
-
url = crypto.url_for :image => image_url, :halign => :left, :valign => :top
|
156
|
-
|
157
|
-
url.should == 'left/top/' << image_md5
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should return meta properly" do
|
161
|
-
crypto = Thumbor::CryptoURL.new key
|
162
|
-
|
163
|
-
url = crypto.url_for :image => image_url, :meta => true
|
164
|
-
|
165
|
-
url.should == 'meta/' << image_md5
|
166
|
-
end
|
167
|
-
|
168
|
-
it "should return proper crop url" do
|
169
|
-
crypto = Thumbor::CryptoURL.new key
|
170
|
-
|
171
|
-
url = crypto.url_for :image => image_url, :crop => [10, 20, 30, 40]
|
172
|
-
|
173
|
-
url.should == '10x20:30x40/' << image_md5
|
174
|
-
end
|
175
|
-
|
176
|
-
it "should ignore crop if all zeros" do
|
177
|
-
crypto = Thumbor::CryptoURL.new key
|
178
|
-
|
179
|
-
url = crypto.url_for :image => image_url, :crop => [0, 0, 0, 0]
|
180
|
-
|
181
|
-
url.should == image_md5
|
182
|
-
end
|
183
|
-
|
184
|
-
it "should have smart after halign and valign" do
|
185
|
-
crypto = Thumbor::CryptoURL.new key
|
186
|
-
|
187
|
-
url = crypto.url_for :image => image_url, :halign => :left, :valign => :top, :smart => true
|
188
|
-
|
189
|
-
url.should == 'left/top/smart/' << image_md5
|
190
|
-
end
|
191
|
-
|
192
|
-
it "should ignore filters if empty" do
|
193
|
-
crypto = Thumbor::CryptoURL.new key
|
194
|
-
|
195
|
-
url = crypto.url_for :image => image_url, :filters => []
|
196
|
-
|
197
|
-
url.should == image_md5
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
describe Thumbor::CryptoURL, "#generate" do
|
202
|
-
|
203
|
-
before :each do
|
204
|
-
@crypto = Thumbor::CryptoURL.new key
|
205
|
-
end
|
206
|
-
|
207
|
-
it "should create a new instance passing key and keep it" do
|
208
|
-
url = @crypto.generate :width => 300, :height => 200, :image => image_url
|
209
|
-
|
210
|
-
url.should == '/TQfyd3H36Z3srcNcLOYiM05YNO8=/300x200/my.domain.com/some/image/url.jpg'
|
211
|
-
end
|
212
|
-
|
213
|
-
it "should create a new instance passing key and keep it" do
|
214
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url
|
215
|
-
|
216
|
-
url.should == '/YBQEWd3g_WRMnVEG73zfzcr8Zj0=/meta/300x200/my.domain.com/some/image/url.jpg'
|
217
|
-
end
|
218
|
-
|
219
|
-
it "should create a new instance passing key and keep it" do
|
220
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true
|
221
|
-
|
222
|
-
url.should == '/jP89J0qOWHgPlm_lOA28GtOh5GU=/meta/300x200/smart/my.domain.com/some/image/url.jpg'
|
223
|
-
end
|
224
|
-
|
225
|
-
it "should create a new instance passing key and keep it" do
|
226
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :fit_in => true
|
227
|
-
|
228
|
-
url.should == '/zrrOh_TtTs4kiLLEQq1w4bcTYdc=/meta/fit-in/300x200/smart/my.domain.com/some/image/url.jpg'
|
229
|
-
end
|
230
|
-
|
231
|
-
it "should create a new instance passing key and keep it" do
|
232
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :fit_in => true, :flip => true
|
233
|
-
|
234
|
-
url.should == '/4t1XK1KH43cOb1QJ9tU00-W2_k8=/meta/fit-in/-300x200/smart/my.domain.com/some/image/url.jpg'
|
235
|
-
end
|
236
|
-
|
237
|
-
it "should create a new instance passing key and keep it" do
|
238
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :fit_in => true, :flip => true, :flop => true
|
239
|
-
|
240
|
-
url.should == '/HJnvjZU69PkPOhyZGu-Z3Uc_W_A=/meta/fit-in/-300x-200/smart/my.domain.com/some/image/url.jpg'
|
241
|
-
end
|
242
|
-
|
243
|
-
it "should create a new instance passing key and keep it" do
|
244
|
-
url = @crypto.generate :filters => ["quality(20)", "brightness(10)"], :image => image_url
|
245
|
-
|
246
|
-
url.should == '/q0DiFg-5-eFZIqyN3lRoCvg2K0s=/filters:quality(20):brightness(10)/my.domain.com/some/image/url.jpg'
|
247
|
-
end
|
248
|
-
|
249
|
-
end
|
250
|
-
|
251
|
-
describe Thumbor::CryptoURL, "#generate :old => true" do
|
252
|
-
|
253
|
-
before :each do
|
254
|
-
@crypto = Thumbor::CryptoURL.new key
|
255
|
-
end
|
256
|
-
|
257
|
-
it "should create a new instance passing key and keep it" do
|
258
|
-
url = @crypto.generate :width => 300, :height => 200, :image => image_url, :old => true
|
259
|
-
|
260
|
-
url.should == '/qkLDiIbvtiks0Up9n5PACtmpOfX6dPXw4vP4kJU-jTfyF6y1GJBJyp7CHYh1H3R2/' << image_url
|
261
|
-
end
|
262
|
-
|
263
|
-
it "should allow thumbor to decrypt it properly" do
|
264
|
-
url = @crypto.generate :width => 300, :height => 200, :image => image_url, :old => true
|
265
|
-
|
266
|
-
encrypted = url.split('/')[1]
|
267
|
-
|
268
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
269
|
-
|
270
|
-
decrypted["horizontal_flip"].should == false
|
271
|
-
decrypted["vertical_flip"].should == false
|
272
|
-
decrypted["smart"].should == false
|
273
|
-
decrypted["meta"].should == false
|
274
|
-
decrypted["fit_in"].should == false
|
275
|
-
decrypted["crop"]["left"].should == 0
|
276
|
-
decrypted["crop"]["top"].should == 0
|
277
|
-
decrypted["crop"]["right"].should == 0
|
278
|
-
decrypted["crop"]["bottom"].should == 0
|
279
|
-
decrypted["valign"].should == 'middle'
|
280
|
-
decrypted["halign"].should == 'center'
|
281
|
-
decrypted["image_hash"].should == image_md5
|
282
|
-
decrypted["width"].should == 300
|
283
|
-
decrypted["height"].should == 200
|
284
|
-
|
285
|
-
end
|
286
|
-
|
287
|
-
it "should allow thumbor to decrypt it properly with meta" do
|
288
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :old => true
|
289
|
-
|
290
|
-
encrypted = url.split('/')[1]
|
291
|
-
|
292
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
293
|
-
|
294
|
-
decrypted["meta"].should == true
|
295
|
-
decrypted["image_hash"].should == image_md5
|
296
|
-
decrypted["width"].should == 300
|
297
|
-
decrypted["height"].should == 200
|
298
|
-
|
299
|
-
end
|
300
|
-
|
301
|
-
it "should allow thumbor to decrypt it properly with smart" do
|
302
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :old => true
|
303
|
-
|
304
|
-
encrypted = url.split('/')[1]
|
305
|
-
|
306
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
307
|
-
|
308
|
-
decrypted["meta"].should == true
|
309
|
-
decrypted["smart"].should == true
|
310
|
-
decrypted["image_hash"].should == image_md5
|
311
|
-
decrypted["width"].should == 300
|
312
|
-
decrypted["height"].should == 200
|
313
|
-
|
314
|
-
end
|
315
|
-
|
316
|
-
it "should allow thumbor to decrypt it properly with fit-in" do
|
317
|
-
url = @crypto.generate :width => 300, :height => 200, :fit_in => true, :image => image_url, :old => true
|
318
|
-
|
319
|
-
encrypted = url.split('/')[1]
|
320
|
-
|
321
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
322
|
-
|
323
|
-
decrypted["fit_in"].should == true
|
324
|
-
decrypted["image_hash"].should == image_md5
|
325
|
-
decrypted["width"].should == 300
|
326
|
-
decrypted["height"].should == 200
|
327
|
-
|
328
|
-
end
|
329
|
-
|
330
|
-
it "should allow thumbor to decrypt it properly with flip" do
|
331
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :old => true
|
332
|
-
|
333
|
-
encrypted = url.split('/')[1]
|
334
|
-
|
335
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
336
|
-
|
337
|
-
decrypted["meta"].should == true
|
338
|
-
decrypted["smart"].should == true
|
339
|
-
decrypted["image_hash"].should == image_md5
|
340
|
-
decrypted["width"].should == 300
|
341
|
-
decrypted["height"].should == 200
|
342
|
-
decrypted["flip_horizontally"] == true
|
343
|
-
|
344
|
-
end
|
345
|
-
|
346
|
-
it "should allow thumbor to decrypt it properly with flop" do
|
347
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :flop => true, :old => true
|
348
|
-
|
349
|
-
encrypted = url.split('/')[1]
|
350
|
-
|
351
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
352
|
-
|
353
|
-
decrypted["meta"].should == true
|
354
|
-
decrypted["smart"].should == true
|
355
|
-
decrypted["image_hash"].should == image_md5
|
356
|
-
decrypted["width"].should == 300
|
357
|
-
decrypted["height"].should == 200
|
358
|
-
decrypted["flip_horizontally"] == true
|
359
|
-
decrypted["flip_vertically"] == true
|
360
|
-
|
361
|
-
end
|
362
|
-
|
363
|
-
it "should allow thumbor to decrypt it properly with halign" do
|
364
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :flop => true,
|
365
|
-
:halign => :left, :old => true
|
366
|
-
|
367
|
-
encrypted = url.split('/')[1]
|
368
|
-
|
369
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
370
|
-
|
371
|
-
decrypted["meta"].should == true
|
372
|
-
decrypted["smart"].should == true
|
373
|
-
decrypted["image_hash"].should == image_md5
|
374
|
-
decrypted["width"].should == 300
|
375
|
-
decrypted["height"].should == 200
|
376
|
-
decrypted["flip_horizontally"] == true
|
377
|
-
decrypted["flip_vertically"] == true
|
378
|
-
decrypted["halign"] == "left"
|
379
|
-
|
380
|
-
end
|
381
|
-
|
382
|
-
it "should allow thumbor to decrypt it properly with valign" do
|
383
|
-
url = @crypto.generate :width => 300, :height => 200, :meta => true, :image => image_url, :smart => true, :flip => true, :flop => true,
|
384
|
-
:halign => :left, :valign => :top, :old => true
|
385
|
-
|
386
|
-
encrypted = url.split('/')[1]
|
387
|
-
|
388
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
389
|
-
|
390
|
-
decrypted["meta"].should == true
|
391
|
-
decrypted["smart"].should == true
|
392
|
-
decrypted["image_hash"].should == image_md5
|
393
|
-
decrypted["width"].should == 300
|
394
|
-
decrypted["height"].should == 200
|
395
|
-
decrypted["flip_horizontally"] == true
|
396
|
-
decrypted["flip_vertically"] == true
|
397
|
-
decrypted["halign"] == "left"
|
398
|
-
decrypted["valign"] == "top"
|
399
|
-
|
400
|
-
end
|
401
|
-
|
402
|
-
it "should allow thumbor to decrypt it properly with cropping" do
|
403
|
-
url = @crypto.generate :width => 300, :height => 200, :image => image_url, :crop => [10, 20, 30, 40], :old => true
|
404
|
-
|
405
|
-
encrypted = url.split('/')[1]
|
406
|
-
|
407
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
408
|
-
|
409
|
-
decrypted["horizontal_flip"].should == false
|
410
|
-
decrypted["vertical_flip"].should == false
|
411
|
-
decrypted["smart"].should == false
|
412
|
-
decrypted["meta"].should == false
|
413
|
-
decrypted["crop"]["left"].should == 10
|
414
|
-
decrypted["crop"]["top"].should == 20
|
415
|
-
decrypted["crop"]["right"].should == 30
|
416
|
-
decrypted["crop"]["bottom"].should == 40
|
417
|
-
decrypted["valign"].should == 'middle'
|
418
|
-
decrypted["halign"].should == 'center'
|
419
|
-
decrypted["image_hash"].should == image_md5
|
420
|
-
decrypted["width"].should == 300
|
421
|
-
decrypted["height"].should == 200
|
422
|
-
|
423
|
-
end
|
424
|
-
|
425
|
-
it "should allow thumbor to decrypt it properly with filters" do
|
426
|
-
url = @crypto.generate :filters => ["quality(20)", "brightness(10)"], :image => image_url, :old => true
|
427
|
-
|
428
|
-
encrypted = url.split('/')[1]
|
429
|
-
|
430
|
-
decrypted = decrypt_in_thumbor(encrypted)
|
431
|
-
|
432
|
-
decrypted["filters"].should == "quality(20):brightness(10)"
|
433
|
-
end
|
434
|
-
|
435
|
-
|
436
|
-
end
|