Class: SgtnClient::TranslationLoader::SgtnServer

Inherits:
Object
  • Object
show all
Defined in:
lib/sgtn-client/loader/server.rb

Overview

:nodoc:

Constant Summary collapse

ERROR_ILLEGAL_DATA =
'server returned illegal data.'
ERROR_BUSINESS_ERROR =
'server returned business error.'
ERROR_PARTIAL_SUCCESS =
'the request to server was partially successful.'
ERROR_NO_DATA =
'no expected data in response from server. path: %s. Body is: %s'
REQUEST_ARGUMENTS =
{ timeout: 10 }.freeze

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ SgtnServer

Returns a new instance of SgtnServer.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/sgtn-client/loader/server.rb', line 20

def initialize(config)
  product_root = format('i18n/api/v2/translation/products/%<name>s/versions/%<version>s',
                        name: config.product_name, version: config.version)

  @bundle_url = "#{product_root}/locales/%s/components/%s"
  @locales_url = "#{product_root}/localelist"
  @components_url = "#{product_root}/componentlist"

  @conn = Faraday.new(config.vip_server, request: REQUEST_ARGUMENTS) do |f|
    f.response :json # decode response bodies as JSON
    f.use :gzip
    f.response :raise_error
    f.response :logger, config.logger, { log_level: :debug, headers: false, bodies: true }
  end
end

Instance Method Details

#available_bundlesObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/sgtn-client/loader/server.rb', line 42

def available_bundles
  SgtnClient.logger.debug { "[#{method(__callee__).owner}.#{__callee__}]" }

  components_thread = Thread.new { available_components }
  available_locales.reduce(Set.new) do |bundles, locale|
    components_thread.value.reduce(bundles) do |inner_bundles, component|
      inner_bundles << Common::BundleID.new(component, locale)
    end
  end
end

#load_bundle(component, locale) ⇒ Object



36
37
38
39
40
# File 'lib/sgtn-client/loader/server.rb', line 36

def load_bundle(component, locale)
  SgtnClient.logger.debug { "[#{method(__callee__).owner}.#{__callee__}] component=#{component}, locale=#{locale}" }

  query_server(format(@bundle_url, locale, component), ['messages'])
end