lib/integrations/google_translate/processor_service.rb
require 'google/cloud/translate/v3'
class Integrations::GoogleTranslate::ProcessorService
pattr_initialize [:message!, :target_language!]
def perform
return if message.content.blank?
return if hook.blank?
response = client.translate_text(
contents: [message.content],
target_language_code: target_language,
parent: "projects/#{hook.settings['project_id']}"
)
return if response.translations.first.blank?
response.translations.first.translated_text
end
private
def hook
@hook ||= message.account.hooks.find_by(app_id: 'google_translate')
end
def client
@client ||= ::Google::Cloud::Translate::V3::TranslationService::Client.new do |config|
config.credentials = hook.settings['credentials']
end
end
end