adomain 0.1.2 → 0.2.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: f12152322fbc0b75e36dcfc4dcc05497cdd16e1f47082949f42ee2af9bebae12
4
- data.tar.gz: 2f267c665cb5ec0084a9d4752e57763a95f169b34719b4a478622f39ba5c7ece
3
+ metadata.gz: 07e8678866573d16ab4fc9fe09ed4ac489ee494d7135cc66fd60ddf14141ae80
4
+ data.tar.gz: 94e364cc3d2fa19e59291ae1cc2b6483754817d2b8af39afd5881ad06d648ecc
5
5
  SHA512:
6
- metadata.gz: c5ad2bed3658959228d70d592ebf9e6d34d3d14a3b928f945e1dfd916ea1f751a32a3c60fb342bff1e1a4385a9b034a97dd877a0e8ea5a3ecc2e6acf6e725d80
7
- data.tar.gz: 5a8c239d1972737ecb21d6b15d7e64f4c806933d505f75d289aa42ccd3b34b65ea338d8995ecf65202ff70b9345f8c12be02d3880455f6fdf83857ebfff1169f
6
+ metadata.gz: afab2fa4bbaea7a7c4528d4bf5a92035cd92ba4739d4bc4a39e519f6ad549e8d17d4d8ac912c8a17460db8d50a9ab75b318ae2fb0299b022d808beb5f2c208f9
7
+ data.tar.gz: 5ee96ec92e589778e02969a22dff12ac98439024af534196daee14a37bf8a2a7580e2e590514436dc35848e92dd1e18d1c88665e2f90bb1ed7c1447651f58779
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- adomain (0.1.1)
4
+ adomain (0.2.3)
5
5
  addressable (~> 2.5)
6
6
  logger
7
7
 
@@ -13,20 +13,20 @@ GEM
13
13
  diff-lcs (1.3)
14
14
  logger (1.4.1)
15
15
  public_suffix (4.0.1)
16
- rake (10.5.0)
17
- rspec (3.8.0)
18
- rspec-core (~> 3.8.0)
19
- rspec-expectations (~> 3.8.0)
20
- rspec-mocks (~> 3.8.0)
21
- rspec-core (3.8.2)
22
- rspec-support (~> 3.8.0)
23
- rspec-expectations (3.8.4)
16
+ rake (13.0.1)
17
+ rspec (3.9.0)
18
+ rspec-core (~> 3.9.0)
19
+ rspec-expectations (~> 3.9.0)
20
+ rspec-mocks (~> 3.9.0)
21
+ rspec-core (3.9.0)
22
+ rspec-support (~> 3.9.0)
23
+ rspec-expectations (3.9.0)
24
24
  diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.8.0)
26
- rspec-mocks (3.8.1)
25
+ rspec-support (~> 3.9.0)
26
+ rspec-mocks (3.9.0)
27
27
  diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.8.0)
29
- rspec-support (3.8.2)
28
+ rspec-support (~> 3.9.0)
29
+ rspec-support (3.9.0)
30
30
 
31
31
  PLATFORMS
32
32
  ruby
@@ -34,8 +34,8 @@ PLATFORMS
34
34
  DEPENDENCIES
35
35
  adomain!
36
36
  bundler (~> 1.16)
37
- rake (~> 10.0)
37
+ rake (~> 13.0)
38
38
  rspec (~> 3.0)
39
39
 
40
40
  BUNDLED WITH
41
- 1.16.6
41
+ 1.17.3
data/README.md CHANGED
@@ -13,10 +13,12 @@ Adomain["https://www.xyz.com"]
13
13
  # => "xyz.com"
14
14
  ```
15
15
 
16
- Adomain returns the URL host, stripping 'www' by default, scheming your URL if necessary (with "https://").
17
- Optionally, you can strip subdomains or keep 'www' subdomains -- see below.
16
+ Adomain returns the URL host, stripping 'www' by default,
17
+ scheming your URL if necessary (with "https://").
18
+ Optionally, you can strip subdomains or keep 'www' subdomains – see below.
18
19
 
19
- [`Addressable::URI.parse`](https://github.com/sporkmonger/addressable#example-usage) performs the parsing.
20
+ [`Addressable::URI.parse`](https://github.com/sporkmonger/addressable#example-usage)
21
+ performs the parsing.
20
22
 
21
23
  ## Other methods and options
22
24
 
@@ -41,36 +43,62 @@ Adomain.domain "http://abc.xyz.com" # => "xyz.com"
41
43
  Adomain.subdomain_www "http://www.xyz.com" # => "www.xyz.com"
42
44
  ```
43
45
 
46
+ ### Domain options
47
+
44
48
  Optionally, each method accepts boolean values,
45
49
  allowing you to contort the method to do something other
46
50
  than what it says it does. Don't do this, unless you want to.
47
51
 
48
- ### A gotcha: Adomain returns nil for some invalid values
52
+ #### A gotcha: Adomain returns nil for some invalid values
49
53
 
50
- Because Adomain adds a scheme to any string passed to it
51
- Addressable does not error out. So, Adomain returns nil
52
- when presented with otherwise-valid strings
53
- for which Addressable cannot find a domain.
54
+ Because Adomain adds a scheme to any string passed to it,
55
+ schemeless-but-otherwise valid strings do not raise errors.
56
+ Additionally, Adomain rescues InvalidURIError errors,
57
+ and instead returns nil.
54
58
 
55
59
  ```ruby
56
60
  Adomain["hola"] # => nil
57
61
  Adomain["::::::::"] # => nil
58
- Adomain[""] # => Addressable::URI::InvalidURIError
59
- Adomain["{}"] # => Addressable::URI::InvalidURIError
60
- Gem::Version.new(Adomain::VERSION) >= Gem::Version.new(0.2) # => false
62
+ Adomain[""] # => nil
63
+ Adomain["{}"] # => nil
61
64
  ```
62
65
 
63
- #### WARNING: All InvalidURIError will be caught in >= version 0.2
66
+ #### NOTE: InvalidURIError are now caught in >= version 0.2
64
67
 
65
- When 0.2 is released, `Addressable::URI::InvalidURIError`s will be caught
66
- and ignored. Nil will be returned.
68
+ With 0.2 `Addressable::URI::InvalidURIError`s are now caught
69
+ and ignored. Nil is returned.
67
70
 
68
71
  ```ruby
69
72
  Gem::Version.new(Adomain::VERSION) >= Gem::Version.new(0.2) # => true
70
73
  Adomain["hola"] # => nil
71
74
  Adomain["::::::::"] # => nil
72
- Adomain[""] # => nil
73
- Adomain["{}"] # => nil
75
+ Adomain[""] # => nil (formerly raised a Addressable::URI::InvalidURIError)
76
+ Adomain["{}"] # => nil (formerly raised a Addressable::URI::InvalidURIError)
77
+ ```
78
+
79
+ ### Convenience Addressable passthroughs
80
+
81
+ These methods are simply passed through to parsed
82
+ Addressable URI objects, and respond accordingly.
83
+ These are presented for your convenience, and will track with
84
+ your version of Addressable.
85
+
86
+ ```ruby
87
+ Adomain.path "http://www.xyz.com/pages/123" # => "/pages/123"
88
+ Adomain.path "{{{{{" # => "{{{{{"
89
+ Adomain.scheme "http://www.xyz.com/pages/123" # => "http"
90
+ Adomain.scheme "harrison:ford" # => "harrison"
91
+ Adomain.query_values "https://maximumfun.org/donate?amt=20USD" # => {"amt"=>"20USD"}
92
+ Adomain.query_values "google.com?q=gagh.biz" # => {"q"=>"gagh.biz"}
93
+ ```
94
+
95
+ However, they are rescued from InvalidURIError,
96
+ like in other parts of the gem.
97
+
98
+ ```ruby
99
+ Adomain.path "::::::::::::" #=> nil
100
+ Adomain.scheme "::::::::::::" #=> nil
101
+ Adomain.query_values "::::::::::::" #=> nil
74
102
  ```
75
103
 
76
104
  ## Installation
@@ -89,16 +117,23 @@ Or install it yourself as:
89
117
 
90
118
  ## Development
91
119
 
92
- File bugs against the GitHub issue tracker and pull requests to match, where possible.
120
+ File bugs against the GitHub issue tracker and pull requests to match,
121
+ where possible.
93
122
 
94
123
  ## Contributing
95
124
 
96
- Bug reports and pull requests are welcome on GitHub at https://github.com/samnissen/adomain. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
125
+ Bug reports and pull requests are welcome on GitHub at
126
+ https://github.com/samnissen/adomain. This project is intended to be a safe,
127
+ welcoming space for collaboration, and contributors are expected to adhere
128
+ to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
97
129
 
98
130
  ## License
99
131
 
100
- The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
132
+ The gem is available as open source under the terms of the
133
+ [MIT License](https://opensource.org/licenses/MIT).
101
134
 
102
135
  ## Code of Conduct
103
136
 
104
- Everyone interacting in the Adomain project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/adomain/blob/master/CODE_OF_CONDUCT.md).
137
+ Everyone interacting in the Adomain project’s codebases, issue trackers,
138
+ chat rooms and mailing lists is expected to follow the
139
+ [code of conduct](https://github.com/samnissen/adomain/blob/master/CODE_OF_CONDUCT.md).
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.16"
24
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rake", "~> 13.0"
25
25
  spec.add_development_dependency "rspec", "~> 3.0"
26
26
 
27
27
  spec.add_dependency "addressable", "~> 2.5"
@@ -4,14 +4,6 @@ require "logger"
4
4
 
5
5
  class Adomain
6
6
  class << self
7
-
8
- ADDRESSABLE_WARNING = %{
9
- WARNING: breaking change planned:
10
- Adomain will catch Addressable::URI::InvalidURIError.
11
- This error will be caught in version 0.2.
12
- Any code relying on the error will break.
13
- }.gsub(/\s+/, ' ').strip
14
-
15
7
  # [] is a convenience method to subdomain the URL,
16
8
  # or optionally domain or subdomain_www.
17
9
  # Adomain["http://abc.xyz.com"] # => "abc.xyz.com"
@@ -49,6 +41,37 @@ class Adomain
49
41
  subdomain(string, true)
50
42
  end
51
43
 
44
+ # scheme is a wrapper around Addressable::URI's scheme
45
+ # it is only included for convenience
46
+ def scheme(string)
47
+ Addressable::URI.parse(string).scheme
48
+ rescue Addressable::URI::InvalidURIError => e
49
+ nil
50
+ end
51
+
52
+ # path is a wrapper around Addressable::URI's path
53
+ # with a major difference -- it removes the domain components
54
+ # from the string, if the domain is parseable. This is because
55
+ # Addressable leaves it in, for reasons I can't understand.
56
+ def path(string)
57
+ if self.subdomain_www(string)
58
+ substring = /\A#{Regexp.quote(self.subdomain_www(string))}/
59
+ Addressable::URI.parse(string).path.gsub(substring, '')
60
+ else
61
+ Addressable::URI.parse(string).path
62
+ end
63
+ rescue Addressable::URI::InvalidURIError => e
64
+ nil
65
+ end
66
+
67
+ # query_values is a wrapper around Addressable::URI's query_values
68
+ # it is only included for convenience
69
+ def query_values(string)
70
+ Addressable::URI.parse(string).query_values
71
+ rescue Addressable::URI::InvalidURIError => e
72
+ nil
73
+ end
74
+
52
75
  private
53
76
  # parse_for_domain accepts one hash of arguments that allow
54
77
  # changes to the parsing behavior of domains
@@ -85,9 +108,7 @@ class Adomain
85
108
 
86
109
  return domain
87
110
  rescue Addressable::URI::InvalidURIError => e
88
- logger.warn ADDRESSABLE_WARNING
89
-
90
- raise e
111
+ nil
91
112
  end
92
113
 
93
114
  def logger
@@ -1,3 +1,3 @@
1
1
  class Adomain
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adomain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Nissen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-05 00:00:00.000000000 Z
11
+ date: 2020-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -120,8 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  requirements: []
123
- rubyforge_project:
124
- rubygems_version: 2.7.10
123
+ rubygems_version: 3.1.2
125
124
  signing_key:
126
125
  specification_version: 4
127
126
  summary: Simple, uncomplicated, schemed domain parsing using Addressable