class Onesky::Rails::Client

Attributes

base_locale[RW]
client[RW]
config[RW]
onesky_locales[RW]
project[RW]

Public Class Methods

new(config_hash) click to toggle source
# File lib/onesky/rails/client.rb, line 9
def initialize(config_hash)
  unless is_valid_config! config_hash
    raise ArgumentError, 'Invalid config. Please check if `api_key`, `api_secret` and `project_id` exist.'
  end

  @config = config_hash
  @client = ::Onesky::Client.new(@config['api_key'], @config['api_secret'])
  @client.plugin_code = 'rails-string'
  @project = @client.project(@config['project_id'].to_i)
  @base_locale = config_hash.fetch('base_locale', ::I18n.default_locale)
  @onesky_locales = []
end

Public Instance Methods

to_onesky_locale(locale) click to toggle source
# File lib/onesky/rails/client.rb, line 34
def to_onesky_locale(locale)
  locale.gsub('_', '-')
end
to_rails_locale(locale) click to toggle source
# File lib/onesky/rails/client.rb, line 38
def to_rails_locale(locale)
  locale.gsub('-', '_')
end
verify_languages!() click to toggle source
# File lib/onesky/rails/client.rb, line 22
def verify_languages!
  languages = get_languages_from_onesky!
  languages.each do |language|
    locale = language['custom_locale'] || to_rails_locale(language['code'])
    if (language['is_base_language'])
      verify_base_locale!(locale)
    else
      @onesky_locales << locale
    end
  end
end

Private Instance Methods

get_languages_from_onesky!() click to toggle source
# File lib/onesky/rails/client.rb, line 48
def get_languages_from_onesky!
  JSON.parse(@project.list_language)['data']
end
is_valid_config!(config) click to toggle source
# File lib/onesky/rails/client.rb, line 44
def is_valid_config!(config)
  config.has_key?('api_key') && config.has_key?('api_secret') && config.has_key?('project_id')
end
verify_base_locale!(locale) click to toggle source
# File lib/onesky/rails/client.rb, line 52
def verify_base_locale!(locale)
  if (locale != @base_locale.to_s)
    raise BaseLanguageNotMatchError, "The default locale (#{@base_locale.to_s}) of your Rails app doesn't match the base language (#{locale}) of the OneSky project"
  end
end