class Translator::SmartlingCoordinator

Public Class Methods

call(attrs = {}) click to toggle source
# File lib/nexmo_developer/app/services/translator/smartling_coordinator.rb, line 3
def self.call(attrs = {})
  new(attrs).call
end
new(requests:, frequency:) click to toggle source
# File lib/nexmo_developer/app/services/translator/smartling_coordinator.rb, line 7
def initialize(requests:, frequency:)
  @requests  = requests
  @frequency = frequency
end

Public Instance Methods

call() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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_date() click to toggle source
# 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_locale() click to toggle source
# 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) click to toggle source
# 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