public-suffix-list 0.2.1 → 0.2.2

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: e07ccdd8cb5bc94567fa0a93437e7c8cabd66a671d31d0a06030ec49aff9481f
4
- data.tar.gz: 3a2ec9b5966283c4d11c4c1121109af701acb71331807b67aa45130c196da711
3
+ metadata.gz: 41d03f21b529c0401313c948ee0117b05ae770e5774998697dcb53f623da1294
4
+ data.tar.gz: bc7f1cd08207f7a4c0bc17fc979ef46b02db4d663791c5b3601a8bb748785a4c
5
5
  SHA512:
6
- metadata.gz: a154df3dc9285612da36dfc1ec38b98fd6ed1697f473d50692275bbbe5e2285101bc0973097ce9c0d96b124eb8eb525fef3f6141399626b3e206647926ed0f15
7
- data.tar.gz: 7d2bdcb047214593da9ad91479f678247bd2467ff46bbd5d6df72e2da8af63a440010210e400f15af0725ba1843d04f37885c87a85368638497a4e317c35f860
6
+ metadata.gz: e2bbf922fbae28c93ff74423f90b1da07f7578425c0e81ca2019e6757f79f31aafd7183b5b0764d93588293193ebb2dbddf7e8466f3264d13eb74e7017ec79a3
7
+ data.tar.gz: a9a106d7b6674dbbf83e39569669ce4d9897f4b4a7d9a4adf2b8bf39904c4fd5cc4427a8a9291d91307b2e49cbd9e2a7f52c2cf5335d9bc3f803cf3a7fb8af8f
data/Gemfile CHANGED
@@ -1,6 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ group :development do
4
+ gem 'sorbet'
5
+ gem 'sorbet-runtime'
6
+ end
7
+
3
8
  group :test do
9
+ gem 'rdoc'
4
10
  gem 'rspec'
5
11
  gem 'timecop'
6
12
  end
data/README.rdoc CHANGED
@@ -1,6 +1,7 @@
1
1
  = Public Suffix List
2
2
 
3
- * http://github.com/toddsundsted/Public-Suffix-List
3
+ {<img src="https://travis-ci.org/toddsundsted/Public-Suffix-List.svg?branch=master">}[https://travis-ci.org/toddsundsted/Public-Suffix-List]
4
+ {<img src="https://img.shields.io/badge/docs-available-brightgreen.svg">}[https://toddsundsted.github.io/Public-Suffix-List/]
4
5
 
5
6
  == Description
6
7
 
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  $:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__))
2
3
 
3
4
  require 'open-uri'
@@ -6,7 +7,7 @@ require "public_suffix_list/parser.rb"
6
7
 
7
8
  class PublicSuffixList
8
9
 
9
- VERSION = "0.2.1"
10
+ VERSION = "0.2.2"
10
11
 
11
12
  def self.config
12
13
  @@config ||= Config.new
@@ -59,7 +60,7 @@ class PublicSuffixList
59
60
  domain = domain.split(".")
60
61
  result = best(match(domain, rules, true))
61
62
  return ["", "", ""] if result.empty?
62
- [gimme!(domain, result.size), gimme!(domain), domain].reverse.map { |d| d ? d.join(".") : "" }
63
+ [gimme!(domain, result.size), gimme!(domain), domain].reverse.map { |d| d.join(".") }
63
64
  end
64
65
 
65
66
  def tld(domain)
@@ -79,7 +80,10 @@ class PublicSuffixList
79
80
  private
80
81
 
81
82
  def fetch
82
- @rules = Parser.parse(open(@config.url))
83
+ @rules =
84
+ if (file = open(@config.url))
85
+ Parser.parse(file)
86
+ end
83
87
  end
84
88
 
85
89
  def cache
@@ -95,7 +99,7 @@ class PublicSuffixList
95
99
  domain = domain.dup
96
100
  first = domain.pop
97
101
  set = []
98
- [[first.downcase, first], ["!#{first.downcase}", "!#{first}"], ["*", first]].each do |pattern, name|
102
+ [[first&.downcase, first], ["!#{first&.downcase}", "!#{first}"], ["*", first]].each do |pattern, name|
99
103
  if rules[pattern]
100
104
  set << [name] if rules[pattern][:term]
101
105
  match(domain, rules[pattern]).each { |result| set << [first] + result }
@@ -109,10 +113,9 @@ class PublicSuffixList
109
113
  end
110
114
 
111
115
  def best(results)
112
- return [] if results.empty?
113
- result = results.find { |r| r.last[0] == ?! } || results.sort { |a, b| a.size <=> b.size }.last
114
- result = result[0..result.size - 2] if result.last[0] == ?!
115
- result
116
+ result = results.find { |r| r.last&.[](0) == ?! } || results.sort { |a, b| a.size <=> b.size }.last
117
+ result = result[0..result.size - 2] if result && result.last&.[](0) == ?!
118
+ result || []
116
119
  end
117
120
 
118
121
  def gimme!(domain, n = 1)
@@ -1,21 +1,24 @@
1
+ # typed: true
1
2
  class PublicSuffixList
2
3
 
3
4
  class CacheFile
4
5
 
5
6
  def initialize(config)
6
7
  @config = config
8
+ @data = {}
7
9
  end
8
10
 
9
11
  def cache?
10
- @config.cache_dir && File.directory?(@config.cache_dir) && true
12
+ @config.cache_dir && File.directory?(@config.cache_dir) && true || false
11
13
  end
12
14
 
13
15
  def file
14
- File.join(@config.cache_dir, URI.parse(@config.url).path.split("/").last + ".cache") if cache?
16
+ path = URI.parse(@config.url)&.path&.split("/")&.last || ""
17
+ File.join(@config.cache_dir, path + ".cache")
15
18
  end
16
19
 
17
20
  def exist?
18
- File.exist?(file) if cache?
21
+ cache? && File.exist?(file) && true || false
19
22
  end
20
23
 
21
24
  def delete
@@ -31,7 +34,8 @@ class PublicSuffixList
31
34
  end
32
35
 
33
36
  def data
34
- @data or (load_data and @data) or @data = {}
37
+ @data.empty? and load_data
38
+ @data
35
39
  end
36
40
 
37
41
  def [](key)
@@ -39,7 +43,7 @@ class PublicSuffixList
39
43
  end
40
44
 
41
45
  def []=(key, value)
42
- data.merge!({key => value, created_at: Time.now, tag: rand(36**8).to_s(36)}) and dump_data
46
+ data.merge!({key => value, created_at: Time.now, tag: rand(2821109907456).to_s(36)}) and dump_data
43
47
  end
44
48
 
45
49
  def expired?
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  class PublicSuffixList
2
3
 
3
4
  module Parser
data/spec/caching_spec.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'tmpdir'
2
3
  require 'public_suffix_list'
3
4
  require 'timecop'
@@ -1,3 +1,4 @@
1
+ # typed: true
1
2
  require 'public_suffix_list'
2
3
 
3
4
  def cookie_calculation(public_suffix_list, domain)
@@ -1,3 +1,4 @@
1
+ # typed: false
1
2
  require 'public_suffix_list'
2
3
 
3
4
  describe PublicSuffixList do
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  require 'tmpdir'
2
3
  require 'public_suffix_list'
3
4
 
@@ -1,3 +1,4 @@
1
+ # typed: strict
1
2
  require 'public_suffix_list'
2
3
 
3
4
  describe PublicSuffixList do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: public-suffix-list
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todd Sundsted
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-05 00:00:00.000000000 Z
11
+ date: 2019-10-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: The Public Suffix List (http://publicsuffix.org/) is "a cross-vendor
14
14
  initiative to provide an accurate list of domain name suffixes". Such a list is