Sha256: b37e2db5c6f6f38c1d4fd9717e2a6eef7a7635689b898ee9f0f0e876cc9c5794

Contents?: true

Size: 1.32 KB

Versions: 35

Compression:

Stored size: 1.32 KB

Contents

require 'uri'
require 'tempfile'
require 'browse_everything/retriever'

class ImportUrlJob < ActiveJob::Base
  queue_as CurationConcerns.config.ingest_queue_name

  before_enqueue do |job|
    log = job.arguments.last
    log.pending_job(job)
  end

  def perform(file_set, log)
    log.performing!
    user = User.find_by_user_key(file_set.depositor)

    Tempfile.open(file_set.id.tr('/', '_')) do |f|
      copy_remote_file(file_set, f)

      # reload the FileSet once the data is copied since this is a long running task
      file_set.reload

      # attach downloaded file to FileSet stubbed out
      if CurationConcerns::Actors::FileSetActor.new(file_set, user).create_content(f)
        # send message to user on download success
        CurationConcerns.config.callback.run(:after_import_url_success, file_set, user)
        log.success!
      else
        CurationConcerns.config.callback.run(:after_import_url_failure, file_set, user)
        log.fail!(file_set.errors.full_messages.join(' '))
      end
    end
  end

  protected

    def copy_remote_file(file_set, f)
      f.binmode
      # download file from url
      uri = URI(file_set.import_url)
      spec = { 'url' => uri }
      retriever = BrowseEverything::Retriever.new
      retriever.retrieve(spec) do |chunk|
        f.write(chunk)
      end
      f.rewind
    end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
curation_concerns-1.7.8 app/jobs/import_url_job.rb
curation_concerns-1.7.7 app/jobs/import_url_job.rb
curation_concerns-2.0.0 app/jobs/import_url_job.rb
curation_concerns-2.0.0.rc2 app/jobs/import_url_job.rb
curation_concerns-1.7.6 app/jobs/import_url_job.rb
curation_concerns-1.7.5 app/jobs/import_url_job.rb
curation_concerns-1.7.4 app/jobs/import_url_job.rb
curation_concerns-1.7.3 app/jobs/import_url_job.rb
curation_concerns-1.7.2 app/jobs/import_url_job.rb
curation_concerns-2.0.0.rc1 app/jobs/import_url_job.rb
curation_concerns-1.7.1 app/jobs/import_url_job.rb
curation_concerns-1.7.0 app/jobs/import_url_job.rb
curation_concerns-1.7.0.beta1 app/jobs/import_url_job.rb
curation_concerns-1.6.3 app/jobs/import_url_job.rb
curation_concerns-1.6.2 app/jobs/import_url_job.rb
curation_concerns-1.6.1 app/jobs/import_url_job.rb
curation_concerns-1.6.0 app/jobs/import_url_job.rb
curation_concerns-1.5.0 app/jobs/import_url_job.rb
curation_concerns-1.4.0 app/jobs/import_url_job.rb
curation_concerns-1.3.3 app/jobs/import_url_job.rb