richurls 0.5.5 → 0.5.6

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: 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