Class: ImportUrlJob
- Inherits:
-
ActiveFedoraIdBasedJob
- Object
- ActiveFedoraIdBasedJob
- ImportUrlJob
- Defined in:
- app/jobs/import_url_job.rb
Instance Attribute Summary
Attributes inherited from ActiveFedoraIdBasedJob
Instance Method Summary collapse
Methods inherited from ActiveFedoraIdBasedJob
Constructor Details
This class inherits a constructor from ActiveFedoraIdBasedJob
Instance Method Details
#copy_remote_file(_import_url, f) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/jobs/import_url_job.rb', line 30 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 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 [uri.path, mime_type] end |
#job_user ⇒ Object
52 53 54 |
# File 'app/jobs/import_url_job.rb', line 52 def job_user User.batchuser end |
#queue_name ⇒ Object
6 7 8 |
# File 'app/jobs/import_url_job.rb', line 6 def queue_name :import_url end |
#run ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/jobs/import_url_job.rb', line 10 def run user = User.find_by_user_key(generic_file.depositor) Tempfile.open(id.tr('/', '_')) do |f| path, mime_type = copy_remote_file(generic_file.import_url, f) # reload the generic file once the data is copied since this is a long running task generic_file.reload # attach downloaded file to generic file stubbed out if Sufia::GenericFile::Actor.new(generic_file, user).create_content(f, path, 'content', mime_type) # add message to user for downloaded file = "The file (#{generic_file.label}) was successfully imported." job_user.(user, , 'File Import') else job_user.(user, generic_file.errors..join(', '), 'File Import Error') end end end |