Sha256: 557bac2bb42a05bba111d3dbb22f448640b1dca3a003b40da9192dea6d0cfa13
Contents?: true
Size: 949 Bytes
Versions: 1
Compression:
Stored size: 949 Bytes
Contents
module GeoNamesAPI class Country < GeoNamesAPI::Object METHOD = "countryInfoJSON" ID = "country" EXPORT_BASE_URL = "http://download.geonames.org/export/zip/" EXPORT_HEADERS = %W(country_code postal_code place_name admin_name1 admin_code1 admin_name2 admin_code2 admin_name3 admin_code3 latitude longitude accuracy) def postal_code_export zip_data = open(postal_code_export_url) { |f| f.binmode; f.read } stream = lambda { return zip_data.slice!(0, 256) } csv = EXPORT_HEADERS.join("\t") + "\n" Zip::Archive.open_buffer(stream) do |archive| archive.each do |f| csv << f.read if f.name =~ /\A#{country_code}/ end end csv end def postal_code_csv CSV.parse(postal_code_export, headers: true, col_sep: "\t", header_converters: :symbol) end def postal_code_export_url EXPORT_BASE_URL + country_code + ".zip" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
geonames_api-0.0.4 | lib/geonames_api/country.rb |