class Bisu::Source::Tolgee
Public Class Methods
new(api_key, custom_host = nil)
click to toggle source
# File lib/bisu/source/tolgee.rb, line 8 def initialize(api_key, custom_host = nil) @api_key = api_key @host = custom_host || "app.tolgee.io" end
Public Instance Methods
to_i18()
click to toggle source
# File lib/bisu/source/tolgee.rb, line 13 def to_i18 Logger.info("Downloading dictionary from Tolgee...") hash = {} export do |language, language_data| hash[language] = language_data end Logger.info("Found #{hash.count} languages.") hash end
Private Instance Methods
export() { |language, language_data| ... }
click to toggle source
# File lib/bisu/source/tolgee.rb, line 28 def export uri = URI("https://#{@host}/v2/projects/export?format=JSON&structureDelimiter=") request = Net::HTTP::Get.new(uri) request['X-API-Key'] = @api_key response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request(request) end raise "Bisu::Source::Tolgee: Http Error #{response.body}" unless response.is_a?(Net::HTTPSuccess) # Create a temporary directory to extract the zip file temp_dir = Dir.mktmpdir # Extract the zip archive Zip::File.open_buffer(response.body) do |zip_file| zip_file.each do |entry| language = File.basename(entry.name, '.*') # Extract language from file name language_data = JSON.parse(entry.get_input_stream.read) yield language, language_data end end # Clean up the temporary directory FileUtils.remove_entry(temp_dir) end