class Kokki::IPAddress
Constants
- PRIVATE_IPS
Attributes
address[R]
Public Class Methods
new(address)
click to toggle source
# File lib/kokki/ip_address.rb, line 11 def initialize(address) @address = address raise InvalidInputError, "Invalid input: #{address}" if !valid_format? || internal? end
Public Instance Methods
country_code()
click to toggle source
# File lib/kokki/ip_address.rb, line 17 def country_code @country_code ||= [].tap do |out| begin res = IPInfo.geo(address) out << res.dig("country") rescue Error => _e out << nil end end.first end
internal?()
click to toggle source
# File lib/kokki/ip_address.rb, line 29 def internal? loopback? || private? end
loopback?()
click to toggle source
# File lib/kokki/ip_address.rb, line 33 def loopback? address == "0.0.0.0" || address.start_with?("127") || address == "::1" end
private?()
click to toggle source
# File lib/kokki/ip_address.rb, line 37 def private? PRIVATE_IPS.any? { |ip| ip.include?(address) } end
Private Instance Methods
valid_format?()
click to toggle source
# File lib/kokki/ip_address.rb, line 43 def valid_format? IPAddr.new(address) true rescue IPAddr::InvalidAddressError => _e false end