richurls 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
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