Module: PublicSuffix
- Defined in:
- lib/public_suffix.rb,
lib/public_suffix/list.rb,
lib/public_suffix/rule.rb,
lib/public_suffix/domain.rb,
lib/public_suffix/errors.rb,
lib/public_suffix/version.rb,
lib/public_suffix/rule_list.rb
Defined Under Namespace
Modules: Version Classes: Domain, DomainInvalid, DomainNotAllowed, Error, List, Rule
Constant Summary collapse
- NAME =
"Public Suffix"
- GEM =
"public_suffix_service"
- AUTHORS =
["Simone Carletti <[email protected]>"]
- InvalidDomain =
Deprecated.
Use DomainInvalid.
Backward Compatibility
DomainInvalid
- VERSION =
Version::STRING
- RuleList =
List
Class Method Summary collapse
-
.parse(domain) ⇒ PublicSuffix::Domain
Parses
domain
and returns the Domain instance. -
.valid?(domain) ⇒ Boolean
Checks whether
domain
is assigned and allowed, without actually parsing it.
Class Method Details
.parse(domain) ⇒ PublicSuffix::Domain
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/public_suffix.rb', line 68 def self.parse(domain) rule = List.default.find(domain) if rule.nil? raise DomainInvalid, "`#{domain}' is not a valid domain" end if !rule.allow?(domain) raise DomainNotAllowed, "`#{domain}' is not allowed according to Registry policy" end left, right = rule.decompose(domain) parts = left.split(".") # If we have 0 parts left, there is just a tld and no domain or subdomain # If we have 1 part left, there is just a tld, domain and not subdomain # If we have 2 parts left, the last part is the domain, the other parts (combined) are the subdomain tld = right sld = parts.empty? ? nil : parts.pop trd = parts.empty? ? nil : parts.join(".") Domain.new(tld, sld, trd) end |
.valid?(domain) ⇒ Boolean
Checks whether domain
is assigned and allowed, without actually parsing it.
This method doesn’t care whether domain is a domain or subdomain. The validation is performed using the default List.
129 130 131 132 |
# File 'lib/public_suffix.rb', line 129 def self.valid?(domain) rule = List.default.find(domain) !rule.nil? && rule.allow?(domain) end |