trabajo-afectivo/lib/service/geo_ip/zammad.rb

47 lines
1.1 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
require 'cache'
class Service::GeoIp::Zammad
def self.location(address)
# check cache
cache_key = "zammadgeoip::#{address}"
cache = Cache.get( cache_key )
return cache if cache
# do lookup
host = 'https://geo.zammad.com'
url = "/lookup?ip=#{CGI.escape address}"
data = {}
begin
2015-03-22 22:13:39 +00:00
response = UserAgent.get(
"#{host}#{url}",
{},
{
json: true,
open_timeout: 2,
read_timeout: 4,
total_timeout: 4,
},
)
if !response.success? && response.code.to_s !~ /^40.$/
2016-03-01 14:26:46 +00:00
raise "ERROR: #{response.code}/#{response.body}"
end
data = response.data
2015-03-22 12:23:05 +00:00
# compat. map
if data && data['country_code2']
data['country_code'] = data['country_code2']
end
Cache.write( cache_key, data, { expires_in: 90.days } )
rescue => e
2015-05-05 08:26:53 +00:00
Rails.logger.error "#{host}#{url}: #{e.inspect}"
Cache.write( cache_key, data, { expires_in: 60.minutes } )
end
data
end
end