Sha256: 72c97c341c402d1e96ad350340cce167dc767fd3ef59a3d5a57507846487558e
Contents?: true
Size: 1.85 KB
Versions: 2
Compression:
Stored size: 1.85 KB
Contents
require_relative 'rrutils' module OpenDNS class DNSDB module ByIP include OpenDNS::DNSDB::RRUtils 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 def history_by_ip(ips, type) ips_is_array = ips.kind_of?(Enumerable) ips = [ ips ] unless ips_is_array multi = Ethon::Multi.new queries = { } ips.each do |ip| next if queries[ip] url = "/dnsdb/ip/#{type}/#{ip}.json" query = query_handler(url) multi.add(query) queries[ip] = query end multi.perform 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 def names_history_by_nameserver_ip(ips) history_by_ip(ips, 'ns') end def names_by_nameserver_ip(ips) rr_only_for_ips(names_history_by_nameserver_ip(ips)) end def distinct_names_by_nameserver_ip(ips) distinct_rrs(names_by_nameserver_ip(ips)) end def names_history_by_ip(ips) history_by_ip(ips, 'a') end def names_by_ip(ips) rr_only_for_ips(names_history_by_ip(ips)) end def distinct_names_by_ip(ips) distinct_rrs(names_by_ip(ips)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opendns-dnsdb-0.2.0 | lib/opendns-dnsdb/dnsdb/by_ip.rb |
opendns-dnsdb-0.1.0 | lib/opendns-dnsdb/dnsdb/by_ip.rb |