class Ukemi::Services::Service

Public Class Methods

inherited(child) click to toggle source
# File lib/ukemi/services/service.rb, line 34
def inherited(child)
  Ukemi.services << child
end

Public Instance Methods

configurated?() click to toggle source
# File lib/ukemi/services/service.rb, line 27
def configurated?
  config_keys.all? do |key|
    ENV.key? key
  end
end
lookup(data) click to toggle source
# File lib/ukemi/services/service.rb, line 14
def lookup(data)
  @data = data

  case type
  when "ip"
    lookup_by_ip data
  when "domain"
    lookup_by_domain data
  else
    raise ArgumentError, "#{data} is not a valid input."
  end
end
name() click to toggle source
# File lib/ukemi/services/service.rb, line 10
def name
  @name ||= self.class.to_s.split("::").last
end

Private Instance Methods

config_keys() click to toggle source
# File lib/ukemi/services/service.rb, line 41
def config_keys
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end
domain?() click to toggle source
# File lib/ukemi/services/service.rb, line 60
def domain?
  uri = Addressable::URI.parse("http://#{@data}")
  uri.host == @data && PublicSuffix.valid?(uri.host)
rescue Addressable::URI::InvalidURIError => _e
  false
end
ip?() click to toggle source
# File lib/ukemi/services/service.rb, line 53
def ip?
  IPAddr.new @data
  true
rescue IPAddr::InvalidAddressError => _e
  false
end
lookup_by_domain() click to toggle source
# File lib/ukemi/services/service.rb, line 49
def lookup_by_domain
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end
lookup_by_ip() click to toggle source
# File lib/ukemi/services/service.rb, line 45
def lookup_by_ip
  raise NotImplementedError, "You must implement #{self.class}##{__method__}"
end
type() click to toggle source
# File lib/ukemi/services/service.rb, line 67
def type
  return "ip" if ip?
  return "domain" if domain?
end