Sha256: adf6214519f3e6c6240061355e571d8066e71e86bf1b336f0171b878e008ff6a

Contents?: true

Size: 1.47 KB

Versions: 10

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

require 'lt/google/api/auth/cli'

module Lcms
  module Engine
    class DocumentParseJob < Lcms::Engine::ApplicationJob
      include ResqueJob
      include RetryDelayed

      queue_as :default

      def perform(entry, options = {})
        if entry.is_a?(Document)
          @document = entry
          reimport_materials if options[:reimport_materials].present?
          reimport_document(@document.file_url) if result.nil?

          @document.update(reimported: false) unless result[:ok]
        else
          reimport_document entry
        end

        store_result result, options
      end

      private

      attr_reader :document, :result

      def reimport_document(link)
        form = DocumentForm.new({ link: link }, import_retry: true)
        @result = if form.save
                    { ok: true, link: link, model: form.document, warnings: form.service_errors }
                  else
                    { ok: false, link: link, errors: form.errors[:link] }
                  end
      end

      def reimport_materials
        document.materials.each do |material|
          link = material.file_url
          form = MaterialForm.new({ link: link, source_type: material.source_type }, import_retry: true)
          next if form.save

          error_msg = %(Material error (<a href="#{link}">source</a>): #{form.errors[:link]})
          @result = { ok: false, link: link, errors: [error_msg] }
          break
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
lcms-engine-0.5.5 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.5.4 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.5.3 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.5.2 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.5.1 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.5.0 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.4.2 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.4.1 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.4.0 app/jobs/lcms/engine/document_parse_job.rb
lcms-engine-0.3.1 app/jobs/lcms/engine/document_parse_job.rb