richurls 0.5.5 → 0.5.6

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: 693d986c664aa571150f5c426a7ee496125e615321c1156d2c0eaf0b3f0db6e7
4
- data.tar.gz: 4699ba24e5a8f2ed3ccfd2e8aa632c4243033e72d0f6db5b54e5faa16313514d
3
+ metadata.gz: db4d6b2a40debb931cb10f2ff022d85743502f486b316f1046837a28d99275c4
4
+ data.tar.gz: 7ab58ccab0303530fe78c23d33f8e9b58c27131f41267df2428e7a1a4ab1ca18
5
5
  SHA512:
6
- metadata.gz: b5d7b35375f42c0bdfecdbd05179c984c1ec0d05669c3067280bbcea38bf9f9a34e79794ce587d4f23d0b26dfd1f45a664a6575551eccea7038bd89f3a168eb1
7
- data.tar.gz: 04c2167a8ee0dad5a80447522a96d188a9687771e49609bf0857aa0d223fb47659a73de66225b376ce23000271f8dbb7546f48e72cc3ace62a1aa1fd6e130b92
6
+ metadata.gz: e45af9667708ee4e787dba1b01da0a341557eac3c76f7ad2cea685282de862b6fdcb6e178365064514ced571bd79133205a393416e27d8eb71cd9bbb010741fb
7
+ data.tar.gz: fbc11283743e3198bb60469d7c592aac515134f18ce13937b9d804b8fb12ecde82e2dc81224ae81af1933fbc6ab7e402a66a02d07a2f084d6e4364d562785818
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- richurls (0.5.5)
4
+ richurls (0.5.6)
5
5
  addressable (~> 2)
6
6
  oj (~> 3)
7
7
  ox (~> 2)
@@ -21,7 +21,7 @@ GEM
21
21
  parser (2.7.1.1)
22
22
  ast (~> 2.4.0)
23
23
  patron (0.13.3)
24
- public_suffix (4.0.4)
24
+ public_suffix (4.0.5)
25
25
  rainbow (3.0.0)
26
26
  redis (4.1.4)
27
27
  rexml (3.2.4)
data/lib/url_helper.rb CHANGED
@@ -9,34 +9,32 @@ class UrlHelper
9
9
 
10
10
  def initialize(domain, url)
11
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
12
+ @url = url
16
13
  end
17
14
 
18
15
  def url
19
16
  return if @url.nil?
20
- return Addressable::URI.escape(@url) if valid_url?
21
17
 
22
- build_url
18
+ parsed = Addressable::URI.parse(@url)
19
+ full_url = valid?(parsed) ? parsed.to_s : domain_uri
20
+ Addressable::URI.escape(full_url)
21
+ rescue Addressable::URI::InvalidURIError
23
22
  end
24
23
 
25
24
  private
26
25
 
27
- def build_url
28
- domain_uri = URI(@domain)
29
- base = domain_uri.scheme + '://' + domain_uri.host
30
- escaped_url = Addressable::URI.escape(@url)
31
-
32
- if @url.start_with?('/')
33
- base + escaped_url
34
- else
35
- base + domain_uri.path + '/' + escaped_url
36
- end
26
+ def valid?(parsed)
27
+ parsed.host && (parsed.scheme || @url.start_with?('//'))
37
28
  end
38
29
 
39
- def valid_url?
40
- @url.start_with?('//') || @url =~ URI::DEFAULT_PARSER.make_regexp
30
+ def domain_uri
31
+ domain = Addressable::URI.parse(@domain)
32
+ domain.query = nil
33
+ domain.path = if @url.start_with?('/')
34
+ @url
35
+ else
36
+ domain.path + '/' + @url
37
+ end
38
+ domain.to_s
41
39
  end
42
40
  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.5'
6
+ spec.version = '0.5.6'
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.5
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - grdw
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-08 00:00:00.000000000 Z
11
+ date: 2020-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable