Module: Booth::Core::Geolocation

Defined in:
lib/booth/core/geolocation.rb

Class Method Summary collapse

Class Method Details

.lookup(ip) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/booth/core/geolocation.rb', line 6

def self.lookup(ip)
  return 'localhost' if ['127.0.0.1', '::1'].include?(ip.to_s)
  return unless defined?(::DbipUtil)

  record = ::DbipUtil::City.get(ip.to_s)
  return unless record

  record['city']['names']['de'] ||
    record['city']['names']['en'] ||
    record['subdivisions']['names']['de'] ||
    record['subdivisions']['names']['en'] ||
    record['country']['names']['de'] ||
    record['country']['names']['en']

rescue IPAddr::InvalidAddressError
  nil
end