class Apullo::Target

Attributes

id[R]

Public Class Methods

new(id) click to toggle source
# File lib/apullo/target.rb, line 12
def initialize(id)
  @id = id
end

Public Instance Methods

domain?() click to toggle source
# File lib/apullo/target.rb, line 49
def domain?
  return false if host.match? /[0-9]\z/

  PublicSuffix.valid?(host, default_rule: nil)
end
host() click to toggle source
# File lib/apullo/target.rb, line 20
def host
  @host ||= uri&.host
end
ip?() click to toggle source
# File lib/apullo/target.rb, line 42
def ip?
  IPAddr.new host
  true
rescue IPAddr::InvalidAddressError => _e
  false
end
ipv4() click to toggle source
# File lib/apullo/target.rb, line 16
def ipv4
  @ipv4 ||= resolve
end
scheme() click to toggle source
# File lib/apullo/target.rb, line 24
def scheme
  @scheme ||= uri&.scheme
end
uri() click to toggle source
# File lib/apullo/target.rb, line 32
def uri
  @uri ||= Addressable::URI.parse(_url)
rescue Addressable::URI::InvalidURIError => _e
  nil
end
url() click to toggle source
# File lib/apullo/target.rb, line 28
def url
  @url ||= uri&.to_s
end
valid?() click to toggle source
# File lib/apullo/target.rb, line 38
def valid?
  uri && (ip? | domain?)
end

Private Instance Methods

_url() click to toggle source
# File lib/apullo/target.rb, line 57
def _url
  @_url ||= id.start_with?("http://", "https://") ? id : "http://#{id}"
end
resolve() click to toggle source
# File lib/apullo/target.rb, line 61
def resolve
  Resolv.getaddress uri&.host
rescue Resolv::ResolvError => _e
  nil
end