Sha256: bdb96c68789446d7cbb20eea15d248a4e6ad5c1278c2bd263c0063b07e545681

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

require 'fileutils'

class TranslationEngine::Downloader

  def self.etag?(etag)
    response = @current_etag == etag
    Rails.logger.info { "Translations are up to date" } if response
    @current_etag = etag
    @cache_timeout = Time.now + TranslationEngine.cache_timeout
    response
  end

  def update
    return nil if @cache_timeout && Time.now < @cache_timeout
    return nil if self.class.etag?(connection.get_translations_head[:etag])
    I18n.backend.reload!
  end

  def store
    if (yml_data = receive_translations)
      Rails.logger.info { "Storing translations to #{locale_file}" }
      write(locale_file, yml_data)
      add_translation_file_to_i18n
      I18n.backend.reload!
    end
  end

  def store_release(release)
    locale = release.split('_')[0...-1].join('_')
    filename = releases_dir.join("#{locale.downcase}.yml")
    if (yml_data = connection.get_release(release).try(:body))
      Rails.logger.info { "Storing release #{release} to #{filename}" }
      write(filename, yml_data)
    end
  end

  private

  def add_translation_file_to_i18n
    unless I18n.load_path.include?(locale_file)
      I18n.load_path += [locale_file]
    end
  end

  def connection
    @connection ||= TranslationEngine::Connection.new
  end

  def locale_dir
    Rails.root.join('config', 'locales')
  end

  def locale_file
    locale_dir.join('z_translation_engine.yml')
  end

  def receive_translations
    return if self.class.etag?(connection.get_translations_head[:etag])

    connection.get_translations.try(:body)
  end

  def releases_dir
    dir = Rails.root.join('config', 'locales', 'z_releases')
    FileUtils.mkdir_p(dir) unless File.exists?(dir)
    dir
  end

  def write(filename, data)
    File.open(filename, 'wb') do |f|
      f.write data
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_engine-0.0.5 app/models/translation_engine/downloader.rb