2015-09-22 14:49:57 +00:00
|
|
|
# Copyright (C) 2012-2013 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
|
|
|
|
require 'cache'
|
|
|
|
|
|
|
|
class Service::GeoCalendar::Zammad
|
|
|
|
def self.location(address)
|
|
|
|
|
|
|
|
# check cache
|
|
|
|
cache_key = "zammadgeocalendar::#{address}"
|
2016-01-21 01:07:50 +00:00
|
|
|
cache = Cache.get(cache_key)
|
2015-09-22 14:49:57 +00:00
|
|
|
return cache if cache
|
|
|
|
|
|
|
|
# do lookup
|
|
|
|
host = 'https://geo.zammad.com'
|
2016-01-15 17:22:57 +00:00
|
|
|
url = if address
|
|
|
|
"/calendar?ip=#{CGI.escape address}"
|
|
|
|
else
|
|
|
|
'/calendar'
|
|
|
|
end
|
2015-09-22 14:49:57 +00:00
|
|
|
data = {}
|
|
|
|
begin
|
|
|
|
response = UserAgent.get(
|
|
|
|
"#{host}#{url}",
|
|
|
|
{},
|
|
|
|
{
|
|
|
|
json: true,
|
|
|
|
open_timeout: 2,
|
|
|
|
read_timeout: 4,
|
2016-01-21 01:07:50 +00:00
|
|
|
total_timeout: 12,
|
2015-09-22 14:49:57 +00:00
|
|
|
},
|
|
|
|
)
|
|
|
|
if !response.success? && response.code.to_s !~ /^40.$/
|
2016-03-01 14:26:46 +00:00
|
|
|
raise "ERROR: #{response.code}/#{response.body}"
|
2015-09-22 14:49:57 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
data = response.data
|
|
|
|
|
2016-01-21 01:07:50 +00:00
|
|
|
Cache.write(cache_key, data, { expires_in: 30.minutes })
|
2015-09-22 14:49:57 +00:00
|
|
|
rescue => e
|
|
|
|
Rails.logger.error "#{host}#{url}: #{e.inspect}"
|
2016-01-21 01:07:50 +00:00
|
|
|
Cache.write(cache_key, data, { expires_in: 1.minute })
|
2015-09-22 14:49:57 +00:00
|
|
|
end
|
|
|
|
data
|
|
|
|
end
|
|
|
|
end
|