richurls 0.5.3 → 0.5.4

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: f8022d5e37dee37aa4e7a47b1cecd65075bcb88cce334109ed7df216f2f7971f
4
- data.tar.gz: 3630be60335862908a877de2c9c751febb103a53c1e57517e64f309ff2e11f11
3
+ metadata.gz: 5198667f5f8b0ab26bfb13bd20f7631e59242abeced6b244f63f275626162ee6
4
+ data.tar.gz: 5faf0205ed0a278f9fe2bbcc4d0cf3d2cfccf3916fee2546c21fcb5ae4661462
5
5
  SHA512:
6
- metadata.gz: 7f1f87d3f68b20d44f8303f4922f196e1acfc7a84954880de3b4abdee4b0a669edc33913accc9bcf61bf680c9992f347f1de6fbbc407837dfaf91c0df95532e2
7
- data.tar.gz: 7bd2d865aeab876e83f7100039ebfd38d3e14d06dbcb11bdcdeeb0111703ec6ea91858006e085834aa5c6312138ff620d45ee7615df79e99501b498a526a4f9c
6
+ metadata.gz: 5a693158c7276651a01899ce1db0eb0f32bbe97d16812f3fa6fe9bbd76b70314838259c45ccafa2a2b0ce041cd29f5c34d2249206b345cace3fa3f7968c39897
7
+ data.tar.gz: 5087bbc294f8adc06c563d8763fc9db3d6db529b77cedd99e7cb784641e265492db431906d67af84fdcd503858b1593a9d584c1f9ffbbd0ed91eb92c55afa4de
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- richurls (0.5.3)
4
+ richurls (0.5.4)
5
5
  addressable (~> 2)
6
6
  oj (~> 3)
7
7
  ox (~> 2)
@@ -18,12 +18,12 @@ GEM
18
18
  oj (3.10.6)
19
19
  ox (2.13.2)
20
20
  parallel (1.19.1)
21
- parser (2.7.0.5)
21
+ parser (2.7.1.1)
22
22
  ast (~> 2.4.0)
23
23
  patron (0.13.3)
24
24
  public_suffix (4.0.4)
25
25
  rainbow (3.0.0)
26
- redis (4.1.3)
26
+ redis (4.1.4)
27
27
  rexml (3.2.4)
28
28
  rspec (3.9.0)
29
29
  rspec-core (~> 3.9.0)
@@ -38,7 +38,7 @@ GEM
38
38
  diff-lcs (>= 1.2.0, < 2.0)
39
39
  rspec-support (~> 3.9.0)
40
40
  rspec-support (3.9.2)
41
- rubocop (0.81.0)
41
+ rubocop (0.82.0)
42
42
  jaro_winkler (~> 1.5.1)
43
43
  parallel (~> 1.10)
44
44
  parser (>= 2.7.0.1)
data/lib/url_helper.rb CHANGED
@@ -1,22 +1,38 @@
1
1
  require 'addressable'
2
2
 
3
- module UrlHelper
3
+ class UrlHelper
4
4
  def self.url_for(domain, url)
5
- return if url.nil?
6
- return url if valid_url?(url)
5
+ new(domain, url).url
6
+ end
7
+
8
+ private_class_method :new
7
9
 
8
- domain_uri = URI(domain)
10
+ def initialize(domain, url)
11
+ @domain = domain
12
+
13
+ # In some rare cases it appears to be that URL's are ending with a
14
+ # single whitespace character resulting in an invalid URL.
15
+ @url = url&.strip
16
+ end
17
+
18
+ def url
19
+ return if @url.nil?
20
+ return @url if valid_url?
21
+
22
+ domain_uri = URI(@domain)
9
23
  base = domain_uri.scheme + '://' + domain_uri.host
10
- escaped_url = Addressable::URI.escape(url)
24
+ escaped_url = Addressable::URI.escape(@url)
11
25
 
12
- if url.start_with?('/')
26
+ if @url.start_with?('/')
13
27
  base + escaped_url
14
28
  else
15
29
  base + domain_uri.path + '/' + escaped_url
16
30
  end
17
31
  end
18
32
 
19
- def self.valid_url?(url)
20
- url.start_with?('//') || url =~ URI::DEFAULT_PARSER.make_regexp
33
+ private
34
+
35
+ def valid_url?
36
+ @url.start_with?('//') || @url =~ URI::DEFAULT_PARSER.make_regexp
21
37
  end
22
38
  end
data/richurls.gemspec CHANGED
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = 'richurls'
6
- spec.version = '0.5.3'
6
+ spec.version = '0.5.4'
7
7
  spec.authors = ['grdw']
8
8
  spec.email = ['gerard@wetransfer.com']
9
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: richurls
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - grdw
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-16 00:00:00.000000000 Z
11
+ date: 2020-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable