Class: ImportUrlJob

Inherits:
ActiveFedoraPidBasedJob show all
Defined in:
app/jobs/import_url_job.rb

Instance Attribute Summary

Attributes inherited from ActiveFedoraPidBasedJob

#pid

Instance Method Summary collapse

Methods inherited from ActiveFedoraPidBasedJob

#initialize, #object

Constructor Details

This class inherits a constructor from ActiveFedoraPidBasedJob

Instance Method Details

#copy_remote_file(import_url, f) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/jobs/import_url_job.rb', line 27

def copy_remote_file(import_url, f)
  f.binmode
  # download file from url
  uri = URI(generic_file.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

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

  f.rewind
  uri.path
end

#job_userObject



47
48
49
# File 'app/jobs/import_url_job.rb', line 47

def job_user
  User.batchuser
end

#queue_nameObject



7
8
9
# File 'app/jobs/import_url_job.rb', line 7

def queue_name
  :import_url
end

#runObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/jobs/import_url_job.rb', line 11

def run
  user = User.find_by_user_key(generic_file.depositor)

  Tempfile.open(self.pid) do |f|
    path = copy_remote_file(generic_file.import_url, f)
    # attach downloaded file to generic file stubbed out
    if Sufia::GenericFile::Actor.new(generic_file, user).create_content(f, path, 'content')
      # add message to user for downloaded file
      message = "The file (#{File.basename(path)}) was successfully imported."
      job_user.send_message(user, message, 'File Import')
    else
      job_user.send_message(user, generic_file.errors.full_messages.join(', '), 'File Import Error')
    end
  end
end