Module: OpenDNS::DNSDB::ByIP

Includes:
RRUtils
Included in:
OpenDNS::DNSDB
Defined in:
lib/opendns-dnsdb/dnsdb/by_ip.rb

Instance Method Summary collapse

Methods included from RRUtils

#distinct_rrs

Instance Method Details

#distinct_names_by_ip(ips) ⇒ Object



64
65
66
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 64

def distinct_names_by_ip(ips)
  distinct_rrs(names_by_ip(ips))
end

#distinct_names_by_nameserver_ip(ips) ⇒ Object



52
53
54
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 52

def distinct_names_by_nameserver_ip(ips)
  distinct_rrs(names_by_nameserver_ip(ips))
end

#history_by_ip(ips, type) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 21

def history_by_ip(ips, type)
  ips_is_array = ips.kind_of?(Enumerable)
  ips = [ ips ] unless ips_is_array
  multi = query_multi
  queries = { }
  ips.each do |ip|
    next if queries[ip]
    url = "/dnsdb/ip/#{type}/#{ip}.json"
    query = query_handler(url)
    multi.queue(query)
    queries[ip] = query
  end
  multi.run
  responses = { }
  queries.each_pair do |ip, query|
    obj = MultiJson.load(query.response.body)
    responses[ip] = Response::Raw.new(obj).rrs
  end
  responses = Response::HashByIP[responses]
  responses = responses.values.first unless ips_is_array
  responses
end

#names_by_ip(ips) ⇒ Object



60
61
62
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 60

def names_by_ip(ips)
  rr_only_for_ips(names_history_by_ip(ips))
end

#names_by_nameserver_ip(ips) ⇒ Object



48
49
50
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 48

def names_by_nameserver_ip(ips)
  rr_only_for_ips(names_history_by_nameserver_ip(ips))
end

#names_history_by_ip(ips) ⇒ Object



56
57
58
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 56

def names_history_by_ip(ips)
  history_by_ip(ips, 'a')
end

#names_history_by_nameserver_ip(ips) ⇒ Object



44
45
46
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 44

def names_history_by_nameserver_ip(ips)
  history_by_ip(ips, 'ns')
end

#rr_only_for_ips(responses) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/opendns-dnsdb/dnsdb/by_ip.rb', line 9

def rr_only_for_ips(responses)
  responses_is_hash = responses.kind_of?(Hash)
  responses = { a: responses } unless responses_is_hash
  responses.each_pair do |key, history|
    responses[key] = Response::Distinct.new(history.collect do |rr|
      rr.rr
    end.flatten.uniq)
  end
  responses = responses.values.first unless responses_is_hash
  responses
end