lib/geonames_api/country.rb in geonames_api-0.0.3 vs lib/geonames_api/country.rb in geonames_api-0.0.4

- old
+ new

@@ -1,8 +1,31 @@ module GeoNamesAPI class Country < GeoNamesAPI::Object METHOD = "countryInfoJSON" - ID = "country" + 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 \ No newline at end of file