Sha256: 9ad43431f54b87041207254605d3d5c85ede8a7919fe757850fbcde4a1013c37

Contents?: true

Size: 1.32 KB

Versions: 14

Compression:

Stored size: 1.32 KB

Contents

require 'net/https'
require 'uri'
require 'tempfile'

class ImportUrlJob < ActiveJob::Base
  queue_as :import_url

  def perform(file_set)
    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 generic file once the data is copied since this is a long running task
      file_set.reload

      # attach downloaded file to generic file stubbed out
      if CurationConcerns::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)
      else
        CurationConcerns.config.callback.run(:after_import_url_failure, file_set, user)
      end
    end
  end

  protected

    def copy_remote_file(file_set, f)
      f.binmode
      # download file from url
      uri = URI(file_set.import_url)
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = uri.scheme == 'https' # enable SSL/TLS
      http.verify_mode = OpenSSL::SSL::VERIFY_NONE
      mime_type = nil

      http.start do
        http.request_get(uri.request_uri) do |resp|
          mime_type = resp.content_type
          resp.read_body do |segment|
            f.write(segment)
          end
        end
      end
      f.rewind
    end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
curation_concerns-0.13.1 app/jobs/import_url_job.rb
curation_concerns-0.13.0 app/jobs/import_url_job.rb
curation_concerns-0.12.0 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre9 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre8 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre7 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre6 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre5 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre4 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre3 app/jobs/import_url_job.rb
curation_concerns-0.12.0.pre2 app/jobs/import_url_job.rb
curation_concerns-models-0.12.0.pre1 app/jobs/import_url_job.rb
curation_concerns-models-0.11.0 app/jobs/import_url_job.rb
curation_concerns-models-0.11.0.rc1 app/jobs/import_url_job.rb