def country(hostname)
case @database_type
when Edition::CITY_REV0, Edition::CITY_REV1, Edition::CITY_REV1_V6
city(hostname)
when Edition::REGION_REV0, Edition::REGION_REV1
region(hostname)
when Edition::NETSPEED, Edition::NETSPEED_REV1
netspeed(hostname)
when Edition::COUNTRY, Edition::PROXY, Edition::COUNTRY_V6
ip = lookup_ip(hostname)
if @ip_bits > 32
ipaddr = IPAddr.new ip
code = (seek_record(ipaddr.to_i) - COUNTRY_BEGIN)
else
ipnum = iptonum(ip)
code = (seek_record(ipnum) - @database_segments[0])
end
read_country(code, hostname, ip)
else
throw "Invalid GeoIP database type #{@database_type}, can't look up Country by IP"
end
end