Sha256: f68adeb2de72cb29a574604126ebd426c6d31c8aa32c1f370dbc742bca406870

Contents?: true

Size: 1.26 KB

Versions: 94

Compression:

Stored size: 1.26 KB

Contents

module Translator
  class SmartlingCoordinator
    def self.call(attrs = {})
      new(attrs).call
    end

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

    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

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

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

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

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

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

Version data entries

94 entries across 94 versions & 1 rubygems

Version Path
station-0.5.16 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.15 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.14 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.13 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.12 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.11 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.10 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.9 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.8 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.7 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.6 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.5 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.4 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.3 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.2 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.1 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.5.0 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.4.9 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.4.8 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb
station-0.4.7 lib/nexmo_developer/app/services/translator/smartling_coordinator.rb