4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb', line 4
def perform(file_upload)
return if file_upload.nil? || file_upload.clean?
file_upload.open do |file|
payload = {file: Faraday::Multipart::FilePart.new(
file,
file_upload.content_type,
file_upload.filename
)}
response = connection.post("/scan", payload)
if response.success?
file_upload.update_columns scan_status: "scanned", updated_at: Time.now
else
logger.error "File Scan for #{file_upload.id} failed: #{response.body}"
file_upload.update_columns scan_status: "quarantined", updated_at: Time.now
end
end
rescue => ex
file_upload&.update_columns scan_status: "scan_failed", updated_at: Time.now
raise ex
end
|