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