imglab 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d52305397eb47d122dcfb0211c013ba7d7d11958bb45854949321a3972c87c7
4
- data.tar.gz: 7bf0e1b1325ba9ee9e54be5b3c56cd43de1cc386fa902aba7c9a7468a458fc3f
3
+ metadata.gz: 87c1e0449e9f2b7e000fda519d3413e205cdfab3d9c87c85bfd2edcc2f5e9467
4
+ data.tar.gz: 173c5436f148213ac172bf83e3a65a013d6d169264d9252419c3f6e5bb4c0216
5
5
  SHA512:
6
- metadata.gz: eca396e106d905482ea8ed1a8c081b3bc9d9e5d5380b2af576ae4ab3a36f1318e7585f9a10c90fed9f7fa85be8c75d1b3c971a5bf205e7fd212e05dd5d8dc271
7
- data.tar.gz: b2255cf65a8887bbdd1dbcff7a52c9bf724b8d05ee4b2127931f0f8ed8b424a2c4df4808d41fc63374f959c3e000c08ee54e165d9e4e7c882d1884f8d332868e
6
+ metadata.gz: 39276c9dc2443af3d62b81f20b6313ff0c043300021c21ef9773244543df9967b2fb8afd625404f46528509026d4d18fe17113fc9042e9d06df7eec1a4aa750b
7
+ data.tar.gz: ecc2f549086dbd82f72820d59787192699abfb0c1c7d35c356a58ec1c01452d87e9a9541cc46cf6efa955b42d7417b0de206f164231f5c0f2d8c2ea775be5053
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  Add this line to your application's Gemfile:
8
8
 
9
9
  ```ruby
10
- gem "imglab", "~> 0.1.0"
10
+ gem "imglab", "~> 0.1"
11
11
  ```
12
12
 
13
13
  And then execute:
@@ -49,10 +49,10 @@ Imglab.url(Imglab::Source.new("assets"), "image.jpeg", width: 500, height: 600)
49
49
 
50
50
  ### Using secure image sources
51
51
 
52
- For sources that require signed URLs you can specify `secure_key` and `secure_salt` attributes for the source:
52
+ For sources that require signed URLs you can specify `secure_key` and `secure_salt` attributes:
53
53
 
54
54
  ```ruby
55
- source = Imglab::Source.new(secure_key: "assets-secure-key", secure_salt: "assets-secure-salt")
55
+ source = Imglab::Source.new("assets", secure_key: "assets-secure-key", secure_salt: "assets-secure-salt")
56
56
 
57
57
  Imglab.url(source, "image.jpeg", width: 500, height: 600)
58
58
  "https://cdn.imglab.io/assets/image.jpeg?width=500&height=600&signature=generated-signature"
@@ -167,11 +167,11 @@ include Imglab::Position
167
167
  Imglab.url("assets", "image.jpeg", width: 500, height: 500, mode: "crop", crop: position("left", "top"))
168
168
  "https://cdn.imglab.io/assets/image.jpeg?width=500&height=500&mode=crop&crop=left%2Ctop"
169
169
 
170
- # Using position macro for a vertical and horizontal position
170
+ # Using position helper for a vertical and horizontal position
171
171
  Imglab.url("assets", "image.jpeg", width: 500, height: 500, mode: "crop", crop: position("top", "left"))
172
172
  "https://cdn.imglab.io/assets/image.jpeg?width=500&height=500&mode=crop&crop=top%2Cleft"
173
173
 
174
- # Using position macro for a position
174
+ # Using position helper for a position
175
175
  Imglab.url("assets", "image.jpeg", width: 500, height: 500, mode: "crop", crop: position("left"))
176
176
  "https://cdn.imglab.io/assets/image.jpeg?width=500&height=500&mode=crop&crop=left"
177
177
  ```
data/lib/imglab/utils.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  class Imglab::Utils
2
- NORMALIZE_PATH_PREFIX_REGEXP = Regexp.compile(/\/*$/)
3
- NORMALIZE_PATH_SUFFIX_REGEXP = Regexp.compile(/\A\/*/)
2
+ NORMALIZE_PATH_PREFIX_REGEXP = Regexp.compile(/\A\/*/)
3
+ NORMALIZE_PATH_SUFFIX_REGEXP = Regexp.compile(/\/*$/)
4
+
5
+ WEB_URI_SCHEMES = %w[https http]
4
6
 
5
7
  # Returns a normalized path where suffix and prefix slashes are removed.
6
8
  #
@@ -21,6 +23,16 @@ class Imglab::Utils
21
23
  end
22
24
  end
23
25
 
26
+ # Returns a boolean value indicating whether a string is a valid HTTP/HTTPS URI or not.
27
+ #
28
+ # @param uri [String]
29
+ # @return [Boolean]
30
+ def self.web_uri?(uri)
31
+ WEB_URI_SCHEMES.include?(URI.parse(uri).scheme)
32
+ rescue URI::Error
33
+ false
34
+ end
35
+
24
36
  private
25
37
 
26
38
  def self.dasherize(value)
@@ -1,3 +1,3 @@
1
1
  module Imglab
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/imglab.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require "erb"
2
+
1
3
  require "imglab/version"
2
4
  require "imglab/source"
3
5
  require "imglab/signature"
@@ -41,13 +43,27 @@ module Imglab
41
43
  source.host,
42
44
  source.port,
43
45
  nil,
44
- File.join("/", source.path(normalized_path)),
46
+ File.join("/", source.path(encode_path(normalized_path))),
45
47
  nil,
46
48
  encode_params(source, normalized_path, normalized_params),
47
49
  nil
48
50
  ).to_s
49
51
  end
50
52
 
53
+ def self.encode_path(path)
54
+ if Utils.web_uri?(path)
55
+ encode_path_component(path)
56
+ else
57
+ path.split("/").map do |path_component|
58
+ encode_path_component(path_component)
59
+ end.join("/")
60
+ end
61
+ end
62
+
63
+ def self.encode_path_component(path_component)
64
+ ERB::Util.url_encode(path_component)
65
+ end
66
+
51
67
  def self.encode_params(source, path, params)
52
68
  return encode_empty_params(source, path) if params.empty?
53
69
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imglab
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - imglab
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-24 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Official Ruby library to integrate with imglab services.
14
14
  email:
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
- rubygems_version: 3.0.3
57
+ rubygems_version: 3.1.6
58
58
  signing_key:
59
59
  specification_version: 4
60
60
  summary: Official imglab Ruby library.