class MyGengoLocaleDownloader
Public Class Methods
new(token, project, requested_language="en", tmp_dir="tmp/locale", extention="yml")
click to toggle source
# File lib/my_gengo_locale_downloader.rb, line 5 def initialize(token, project, requested_language="en", tmp_dir="tmp/locale", extention="yml") puts "Retriving locale: #{requested_language}" if ENV["DEBUG"] @requested_language=requested_language @dir = tmp_dir @locale_dir = "#{Rails.root}/config/locales" @token=token @project = project @extention=extention Dir.mkdir(@dir) if !Dir.exists?(@dir) end
Public Instance Methods
download_locale_files()
click to toggle source
# File lib/my_gengo_locale_downloader.rb, line 17 def download_locale_files res = download_zip_file(@project, @requested_language, @token) requested_file_name = save_to_tmp_file(res) unzip_files(requested_file_name, @locale_dir) end
Protected Instance Methods
download_zip_file(project, requested_language, token)
click to toggle source
# File lib/my_gengo_locale_downloader.rb, line 34 def download_zip_file(project, requested_language, token) url = URI.parse("https://mygengo.com/string/p/#{project}/export/language/#{requested_language}/#{token}") req = Net::HTTP::Get.new(url.path) res = Net::HTTP.start(url.host, url.port, :use_ssl=>true) { |http| http.request(req) } res end
save_to_tmp_file(res)
click to toggle source
# File lib/my_gengo_locale_downloader.rb, line 25 def save_to_tmp_file(res) requested_file_name="#{@dir}/#{@requested_language}.zip" open("#{requested_file_name}", "wb") { |file| file.write(res.body) } requested_file_name end
unzip_files(requested_file_name, locale_dir)
click to toggle source
# File lib/my_gengo_locale_downloader.rb, line 43 def unzip_files(requested_file_name, locale_dir) puts "Unziping #{requested_file_name} into #{locale_dir}" if ENV["DEBUG"] Zip::ZipFile.foreach(requested_file_name) { |zipfile| zipfile.to_s =~ /(.{2})\/(.+).ya?ml/ language = $1 file = $2 if language and file #mygengo has a bug where it places the primary locale in the file name...annoying file.sub!(".en","") #if the language already in the name, do not add it unless file =~/\.(#{language})\.?/ name = "#{locale_dir}/#{file}.#{language}.#{@extention}" else name = "#{locale_dir}/#{file}.#{@extention}" end File.delete(name) if File.exists?(name) zipfile.extract(name) puts "extracted #{name}" else puts "unexpected name format" end } end