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