Class: MailProvider::Checker

Inherits:
Object
  • Object
show all
Defined in:
lib/mail_provider/checker.rb

Instance Method Summary collapse

Constructor Details

#initialize(path = nil, directory = nil) ⇒ Checker

Returns a new instance of Checker.



5
6
7
# File 'lib/mail_provider/checker.rb', line 5

def initialize(path = nil, directory = nil)
  @manager = SourceManager.new path, directory
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *a, &b) ⇒ Object



47
48
49
50
51
# File 'lib/mail_provider/checker.rb', line 47

def method_missing(m, *a, &b)
  return map(m, *a, &b) if @free.respond_to?(m, true)

  super
end

Instance Method Details

#check(str, summarize: false) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/mail_provider/checker.rb', line 25

def check(str, summarize: false)
  max_entries

  given, domains, data = fetch_data_for(str, summarize: summarize)
  build_response given, domains, summarize: summarize

  add_success data, :entry, given.name
  add_success data, :subdomain, data.to_a[0][0], given.domain if data.any?
  add_success data, :domain, given.domain

  add_score_to_response
  @response
end

#find(str) ⇒ Object



39
40
41
# File 'lib/mail_provider/checker.rb', line 39

def find(str)
  map(:get, str).map { |k, v| [k, v ? v[1] : 0] }.to_h
end

#map(m, *a, &b) ⇒ Object



43
44
45
# File 'lib/mail_provider/checker.rb', line 43

def map(m, *a, &b)
  { free: @free.send(m, *a, &b), disposable: @disposable.send(m, *a, &b) }
end

#max_entriesObject



19
20
21
22
23
# File 'lib/mail_provider/checker.rb', line 19

def max_entries
  @max_entries ||= MailProvider::Parser::FAMOUS_CHECKS.map do |type, checks|
    [type, checks.map { |check| find(check)[type] }.max]
  end.to_h
end

#respond_to_missing?(m, *a) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/mail_provider/checker.rb', line 53

def respond_to_missing?(m, *a)
  @free.respond_to?(m, *a) || super
end

#setup(refresh: false) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/mail_provider/checker.rb', line 9

def setup(refresh: false)
  @manager.run(refresh: refresh)
  load_tries
  self
rescue TrieLoadError
  raise if refresh

  setup refresh: true
end