Sha256: 74cf081248e2f184fc557e5a9bbc8a97a668ca1f7c801333be697911630c5d7a

Contents?: true

Size: 1.01 KB

Versions: 29

Compression:

Stored size: 1.01 KB

Contents

require 'tempfile'

module Pageflow
  # Import the list of file(s),
  # It includes fetching of the file data from its source
  # and uploading the file to s3
  class FileImportJob < ApplicationJob
    queue_as :slow

    def perform(import_model_id, credentials)
      import_model = FileImport.find(import_model_id)
      file_record = import_model.file
      download_options = JSON.parse import_model.download_options
      file_source = import_model.file_importer.download_file credentials, download_options
      temp_file = save_to_tempfile(file_source)
      upload_attachment file_record, temp_file
      file_record.publish!
    ensure
      temp_file.delete
    end

    def upload_attachment(file_record, temp_file)
      attachment = file_record.attachment
      attachment.assign(temp_file)
      file_record.restore_attributes
      attachment.flush_writes
    end

    def save_to_tempfile(data)
      file = Tempfile.new('foo')
      file.binmode
      file.write(data)
      file.flush
      file
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
pageflow-17.0.4 app/jobs/pageflow/file_import_job.rb
pageflow-17.0.3 app/jobs/pageflow/file_import_job.rb
pageflow-17.0.2 app/jobs/pageflow/file_import_job.rb
pageflow-17.0.1 app/jobs/pageflow/file_import_job.rb
pageflow-17.0.0 app/jobs/pageflow/file_import_job.rb
pageflow-16.2.0 app/jobs/pageflow/file_import_job.rb
pageflow-16.1.0 app/jobs/pageflow/file_import_job.rb
pageflow-16.0.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.8.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.7.1 app/jobs/pageflow/file_import_job.rb
pageflow-15.7.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.6.1 app/jobs/pageflow/file_import_job.rb
pageflow-15.6.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.5.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.4.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.3.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.2.2 app/jobs/pageflow/file_import_job.rb
pageflow-15.2.1 app/jobs/pageflow/file_import_job.rb
pageflow-15.2.0 app/jobs/pageflow/file_import_job.rb
pageflow-15.1.2 app/jobs/pageflow/file_import_job.rb