Sha256: 1f0fa90ac521efb3cc56c90caebc72da764dff190a6d8f2910114064828b5b4a

Contents?: true

Size: 653 Bytes

Versions: 1

Compression:

Stored size: 653 Bytes

Contents

# frozen_string_literal: true

require "resolv"

module RogueOne
  class Ping
    attr_reader :resolver, :nameserver

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

    def get_a_record
      resolver.getresource("example.com", Resolv::DNS::Resource::IN::A)
    rescue Resolv::ResolvError => _e
      nil
    end

    def pong?
      result = get_a_record
      raise Error, "DNS resolve error: there is no resopnse from #{nameserver}" unless result

      true
    end

    def self.pong?(target)
      new(target).pong?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rogue_one-0.4.3 lib/rogue_one/ping.rb