Sha256: cad21c3e414d7bc1a8f4369225dbc9e023f0d1ffa37903d4e9ead180d202bd3c

Contents?: true

Size: 1.97 KB

Versions: 9

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

module Lcms
  module Engine
    # TODO: Extract base functionality into `lt-google-api` gem
    module Google
      class ScriptService
        include Lcms::Engine::GoogleCredentials

        SCRIPT_ID = ENV.fetch('GOOGLE_APPLICATION_SCRIPT_ID', 'PLEASE SET UP SCRIPT ID')
        SCRIPT_FUNCTION = ENV.fetch('GOOGLE_APPLICATION_SCRIPT_FUNCTION', 'postProcessingUB')

        def initialize(document)
          @document = document
        end

        #
        # @param [String] id Google Document identifier
        #
        def execute(id)
          # Create an execution request object.
          request = ::Google::Apis::ScriptV1::ExecutionRequest.new(
            function: SCRIPT_FUNCTION,
            parameters: [id, gdoc_template_id, *Array.wrap(parameters)]
          )
          response = service.run_script(SCRIPT_ID, request)
          return unless response.error

          # The API executed, but the script returned an error.
          error = response.error.details[0]
          msg = "Error with document: #{id}\n"
          msg += "Script error message: #{error['errorMessage']}\n"
          if error['scriptStackTraceElements']
            msg += 'Script error stacktrace:'
            error['scriptStackTraceElements'].each do |trace|
              msg += "\t#{trace['function']}: #{trace['lineNumber']}"
            end
          end
          raise ::Google::Apis::Error, msg
        end

        private

        attr_reader :document

        def gdoc_template_id
          ENV.fetch("GOOGLE_APPLICATION_TEMPLATE_#{document&.orientation&.upcase || 'PORTRAIT'}")
        end

        def parameters
          [document.cc_attribution, document.full_breadcrumb, document.short_url]
        end

        def service
          @service ||=
            begin
              service = ::Google::Apis::ScriptV1::ScriptService.new
              service.authorization = google_credentials
              service
            end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
lcms-engine-0.5.5 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.5.4 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.5.3 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.5.2 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.5.1 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.5.0 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.4.2 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.4.1 app/services/lcms/engine/google/script_service.rb
lcms-engine-0.4.0 app/services/lcms/engine/google/script_service.rb