rack_image_resizer 1.3.4 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rack_image_resizer.rb +13 -15
- data/lib/string.rb +6 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f36dba02c961baff412ab2cf297970602134af182f97291c2b3278349a545de
|
4
|
+
data.tar.gz: '023579e204e4bf5e7c830bab8a3e2228984c6ae83e9e4102e3a72aca9ece97d8'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7de4972dce16c7d10b91258f2d516b09a5a61a07445f36ff6aa7cfc8cf8d32d7d4f9a0a09a09ed86aacc19106011088243f3dd18b1fe622cf22b4dc144d26570
|
7
|
+
data.tar.gz: c5a1d3b61b94b17ecfd6ed1a65131daa5a9b29e3929a4aa4bf2d662becfe082b8586ca889fd46bed5e0b937ced2f9d6b4a50c3fcf0ffd36fba273d93527cae80
|
data/lib/rack_image_resizer.rb
CHANGED
@@ -6,31 +6,29 @@ require_relative 'string'
|
|
6
6
|
module ::RackImageResizer
|
7
7
|
extend self
|
8
8
|
|
9
|
-
def resizer_secret
|
10
|
-
@secret || ENV.fetch('RESIZER_SECRET')
|
11
|
-
end
|
12
|
-
|
13
|
-
def resizer_url
|
14
|
-
@url || ENV.fetch('RESIZER_URL')
|
15
|
-
end
|
16
|
-
|
17
9
|
def set name, value
|
18
|
-
raise 'not allowed' unless [:secret, :url].include?(name)
|
10
|
+
raise 'not allowed' unless [:secret, :url, :host].include?(name)
|
19
11
|
instance_variable_set '@%s' % name, value
|
20
12
|
end
|
21
13
|
|
14
|
+
def get name
|
15
|
+
instance_variable_get('@%s' % name) || ENV.fetch('RESIZER_%s' % name.to_s.upcase)
|
16
|
+
end
|
17
|
+
|
22
18
|
###
|
23
19
|
|
24
|
-
|
25
|
-
# "http://foo.jpg".resize_image("^200x200")
|
26
|
-
# "http://foo.jpg".resize_image - expcts size as param
|
27
|
-
def get opts
|
20
|
+
def build opts
|
28
21
|
opts[:i] ||= opts.delete(:image)
|
29
22
|
opts[:s] ||= opts.delete(:size) if opts[:size]
|
30
23
|
|
31
24
|
# return empty pixel unless self
|
32
25
|
return "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" if opts[:i].to_s == ''
|
33
26
|
|
27
|
+
# add host as prefix to image if relative
|
28
|
+
opts[:i] = get(:host) + opts[:i] if opts[:i][0,1] == '/'
|
29
|
+
|
30
|
+
raise ArgumentError.new('Invalid URL, no https?:// found') unless opts[:i] =~ %r{^https?://}
|
31
|
+
|
34
32
|
opts[:i] = opts[:i].sub(%r{^(\w+)://}, '')
|
35
33
|
prefix = $1 == 'https' ? 's' : 'p'
|
36
34
|
opts[:i] = prefix + opts[:i]
|
@@ -41,7 +39,7 @@ module ::RackImageResizer
|
|
41
39
|
data.push Base64.urlsafe_encode64(opts.to_json).gsub(/=*\s*$/, '')
|
42
40
|
|
43
41
|
# add check
|
44
|
-
data.push Digest::SHA1.hexdigest(
|
42
|
+
data.push Digest::SHA1.hexdigest(get(:secret)+data.first)[0,4]
|
45
43
|
|
46
44
|
# add extension
|
47
45
|
ext = opts[:i].split('.').last.to_s.downcase
|
@@ -49,6 +47,6 @@ module ::RackImageResizer
|
|
49
47
|
data.push '.%s' % ext
|
50
48
|
|
51
49
|
# return full url
|
52
|
-
[
|
50
|
+
[get(:url), data.join('')].join('/r/')
|
53
51
|
end
|
54
52
|
end
|
data/lib/string.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
1
|
unless ''.respond_to?(:resized)
|
2
2
|
class ::String
|
3
|
+
# "http://foo.jpg".resized({ s: "222x222", q: 80 }
|
4
|
+
# "http://foo.jpg".resized("^200x200")
|
5
|
+
# "http://foo.jpg".resized_image - expcts size as param
|
3
6
|
def resized opts=nil
|
4
|
-
opts
|
7
|
+
opts ||= {}
|
8
|
+
opts = { s: opts } if opts.is_a?(String)
|
5
9
|
opts[:i] = self
|
6
10
|
|
7
|
-
RackImageResizer.
|
11
|
+
RackImageResizer.build opts
|
8
12
|
end
|
9
13
|
end
|
10
14
|
end
|