Skip to content

Commit

Permalink
Merge pull request #9 from ninoseki/add-ping
Browse files Browse the repository at this point in the history
feat: add Ping class
  • Loading branch information
ninoseki committed Jun 9, 2019
2 parents 1e1842b + 95fbb86 commit e74672a
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/rogue_one.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

require "rogue_one/resolver"
require "rogue_one/detector"
require "rogue_one/ping"
require "rogue_one/cli"

module RogueOne
Expand Down
5 changes: 4 additions & 1 deletion lib/rogue_one/cli.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ class CLI < Thor
desc "report [DNS_SERVER]", "Show a report of a given DNS server"
def report(dns_server)
with_error_handling do
Ping.pong? dns_server

detector = Detector.new(target: dns_server)
puts JSON.pretty_generate(detector.report)
end
Expand All @@ -17,7 +19,8 @@ def report(dns_server)
def with_error_handling
yield
rescue StandardError => e
puts "Warning: #{e}"
message = { error: e.to_s }
puts JSON.pretty_generate(message)
end
end
end
Expand Down
22 changes: 22 additions & 0 deletions lib/rogue_one/ping.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# frozen_string_literal: true

module RogueOne
class Ping
attr_reader :resolver

def initialize(nameserver)
@resolver = Resolver.new(nameserver: nameserver)
end

def pong?
result = resolver.dig("example.com", "A")
raise Error, "DNS resolve error: there is no resopnse from #{resolver.nameserver}" unless result

true
end

def self.pong?(target)
new(target).pong?
end
end
end
2 changes: 2 additions & 0 deletions lib/rogue_one/resolver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ def dig(domain, type)

def _resolver
@_resolver ||= Resolv::DNS.new(nameserver: [nameserver])
@_resolver.timeouts = 5
@_resolver
end

def resource_by_type(type)
Expand Down
11 changes: 11 additions & 0 deletions spec/ping_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

RSpec.describe RogueOne::Ping do
subject { described_class.new("1.1.1.1") }

describe "#pong?" do
it do
expect(subject.pong?).to eq(true)
end
end
end

0 comments on commit e74672a

Please sign in to comment.