lib/countries/sources/cldr/downloader.rb
# frozen_string_literal: true require 'uri' require 'net/http' require 'nokogiri' require 'fileutils' require 'json' # Support code to allow updating subdivision data from the Unicode CLDR repository module Sources # Support code to allow updating subdivision data from the Unicode CLDR repository module CLDR # Downloads data from the Unicode CLDR repository module Downloader module_function def subdivisions download_folder('subdivisions') end def download_folder(type) folder = File.join(ISO3166_ROOT_PATH, 'tmp', 'cldr', 'trunk', 'common', type) FileUtils.mkdir_p(folder) url = URI.parse("https://api.github.com/repos/unicode-org/cldr/contents/common/#{type}") path_listing = JSON.parse(Net::HTTP.get_response(url).body) path_listing.each do |path| next unless path['name'] =~ /\.xml$/ File.open(File.join(folder, path['name']), 'w') do |f| raw_url = URI.parse(path['download_url']) f.write(Net::HTTP.get_response(raw_url).body) end end end end end end