Class: Translator::SmartlingCoordinator

Inherits:
Object
  • Object
show all
Defined in:
lib/nexmo_developer/app/services/translator/smartling_coordinator.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(requests:, frequency:) ⇒ SmartlingCoordinator

Returns a new instance of SmartlingCoordinator.



7
8
9
10
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 7

def initialize(requests:, frequency:)
  @requests  = requests
  @frequency = frequency
end

Class Method Details

.call(attrs = {}) ⇒ Object



3
4
5
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 3

def self.call(attrs = {})
  new(attrs).call
end

Instance Method Details

#callObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 12

def call
  # One Smartling Job per locale
  requests_by_locale.map do |locale, requests|
    job_id = create_job(locale)

    next unless job_id

    batch_id = create_batch(job_id, requests)

    next unless batch_id

    requests.map { |r| upload_file_to_batch(batch_id, r) }
  end
end

#create_batch(job_id, requests) ⇒ Object



42
43
44
45
46
47
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 42

def create_batch(job_id, requests)
  Translator::Smartling::ApiRequestsGenerator.create_batch(
    job_id: job_id,
    requests: requests
  )
end

#create_job(locale) ⇒ Object



35
36
37
38
39
40
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 35

def create_job(locale)
  Translator::Smartling::ApiRequestsGenerator.create_job(
    locales: [locale],
    due_date: due_date
  )
end

#due_dateObject



31
32
33
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 31

def due_date
  @due_date ||= (Time.zone.now + @frequency.days).to_s(:iso8601)
end

#requests_by_localeObject



27
28
29
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 27

def requests_by_locale
  @requests_by_locale ||= @requests.group_by(&:locale)
end

#upload_file_to_batch(batch_id, translation_request) ⇒ Object



49
50
51
52
53
54
# File 'lib/nexmo_developer/app/services/translator/smartling_coordinator.rb', line 49

def upload_file_to_batch(batch_id, translation_request)
  Translator::Smartling::ApiRequestsGenerator.upload_file(
    batch_id: batch_id,
    translation_request: translation_request
  )
end