class Geo2tz::Updater

Public Class Methods

new() click to toggle source
# File lib/geo2tz/updater.rb, line 6
def initialize
  unzip_db
  parse_cities
  write_file
    end

Public Instance Methods

parse_cities() click to toggle source
# File lib/geo2tz/updater.rb, line 26
def parse_cities
  @parsed_cities = []
  @unparsed_cities.split("\n").each do |line|
    line_data = line.split("\t")
    @parsed_cities << {:lat => line_data[4], :long => line_data[5], :tz => line_data[17]}
  end
  @unparsed_cities = nil # dont need it anymore, let's free up some memory
  true
end
unzip_db() click to toggle source
# File lib/geo2tz/updater.rb, line 12
def unzip_db
  puts "Downloading #{Geo2tz.config[:geoname_url]}."
  open(Geo2tz.config[:geoname_url]) do |zf|
    puts "Done."
    zipfile = Zip::ZipFile.open(zf.path)
    if zipfile.find_entry(Geo2tz.config[:geoname_filename])
      @unparsed_cities = zipfile.read(Geo2tz.config[:geoname_filename])
    else
      raise "Zip file does not contain expected file"
    end
  end
  true
end
write_file() click to toggle source
# File lib/geo2tz/updater.rb, line 36
def write_file
  File.open(File.join(Geo2tz.config[:writable_directory],Geo2tz.config[:filename]), 'w') do |file|
    @parsed_cities.each do |city|
      file.write("#{city[:lat]},#{city[:long]},#{city[:tz]}\n")
    end
  end
  @parsed_cities = nil# dont need it anymore, let's free up some memory
  true
end