Class: ImportUrlJob

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

Instance Attribute Summary

Attributes inherited from ActiveFedoraIdBasedJob

#id

Instance Method Summary collapse

Methods inherited from ActiveFedoraIdBasedJob

#object

Instance Method Details

#copy_remote_file(_import_url, f) ⇒ Object



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

def copy_remote_file(_import_url, 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

#perform(id) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/jobs/import_url_job.rb', line 8

def perform(id)
  @id = id
  user = User.find_by_user_key(file_set.depositor)

  Tempfile.open(id.tr('/', '_')) do |f|
    copy_remote_file(file_set.import_url, f)
    # 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