Class: Donas
- Inherits:
-
Object
- Object
- Donas
- Defined in:
- lib/donas.rb,
lib/donas/errors.rb,
lib/donas/version.rb
Defined Under Namespace
Classes: BadFormatError
Constant Summary collapse
- SEPARATOR =
".".freeze
- VERSION =
"0.1.0".freeze
Class Method Summary collapse
-
.get_address(domain) ⇒ Resolv::IPv4, Resolv::IPv6
Returns a Resolv::IPv4 or Resolv::IPv6 object for the domain.
-
.get_record(domain) ⇒ Resolv::DNS::Resource::IN::A, ...
Returns a record with DNS information.
-
.get_records(domain) ⇒ Array
Returns an Array with Resolv::DNS::Resource::IN::A, Resolv::DNS::Resource::IN::CNAME, Resolv::DNS::Resource::IN::TXT objects.
-
.mx_records(domain) ⇒ Array
Returns an Array with Resolv::DNS::Resource::IN::MX objects.
-
.nameservers(domain) ⇒ Array
Returns an Array with Resolv::DNS::Resource::IN::NS objects.
- .resolver ⇒ Object
- .safe(domain) ⇒ Object
-
.summary(domain) ⇒ Hash
Returns a Hash with all the information about the DNS records of a domain.
Class Method Details
.get_address(domain) ⇒ Resolv::IPv4, Resolv::IPv6
Returns a Resolv::IPv4 or Resolv::IPv6 object for the domain.
40 41 42 43 44 45 46 47 48 |
# File 'lib/donas.rb', line 40 def self.get_address(domain) record = get_record(safe(domain)) if record.respond_to? :address record.address else get_address(record.name.to_s) end end |
.get_record(domain) ⇒ Resolv::DNS::Resource::IN::A, ...
Returns a record with DNS information.
31 32 33 |
# File 'lib/donas.rb', line 31 def self.get_record(domain) resolver.getresource(safe(domain), Resolv::DNS::Resource::IN::ANY) end |
.get_records(domain) ⇒ Array
Returns an Array with Resolv::DNS::Resource::IN::A, Resolv::DNS::Resource::IN::CNAME, Resolv::DNS::Resource::IN::TXT objects.
56 57 58 |
# File 'lib/donas.rb', line 56 def self.get_records(domain) resolver.getresources(safe(domain), Resolv::DNS::Resource::IN::ANY) end |
.mx_records(domain) ⇒ Array
Returns an Array with Resolv::DNS::Resource::IN::MX objects.
12 13 14 |
# File 'lib/donas.rb', line 12 def self.mx_records(domain) resolver.getresources(safe(domain), Resolv::DNS::Resource::IN::MX) end |
.nameservers(domain) ⇒ Array
Returns an Array with Resolv::DNS::Resource::IN::NS objects.
20 21 22 23 24 |
# File 'lib/donas.rb', line 20 def self.nameservers(domain) safe_domain = safe(domain) main_domain = safe_domain.split(SEPARATOR).last(2).join(SEPARATOR) resolver.getresources(main_domain, Resolv::DNS::Resource::IN::NS) end |
.resolver ⇒ Object
71 72 73 |
# File 'lib/donas.rb', line 71 def self.resolver Resolv::DNS.new end |
.safe(domain) ⇒ Object
75 76 77 78 79 |
# File 'lib/donas.rb', line 75 def self.safe(domain) names = domain.split(SEPARATOR) raise BadFormatError.new("#{domain} not valid") if names.size < 2 domain end |
.summary(domain) ⇒ Hash
Returns a Hash with all the information about the DNS records of a domain
64 65 66 67 68 69 |
# File 'lib/donas.rb', line 64 def self.summary(domain) { nameservers: nameservers(domain), mx_records: mx_records(domain) } end |