Sha256: 80443dcbd997f77c9c62ed1a4d8a579b7cd28abf2366ad287cbc7b8e4a189fd2

Contents?: true

Size: 946 Bytes

Versions: 18

Compression:

Stored size: 946 Bytes

Contents

class FileScanJob < ApplicationJob
  queue_as :default

  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

  def connection
    @connection ||= Faraday.new(
      url: ENV["CLAMAV_API_URL"],
      ssl: {verify: false}
    ) do |f|
      f.request :multipart
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
rails_template_18f-2.0.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-1.3.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-1.2.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-1.1.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-1.0.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.8.2 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.8.1 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.8.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.7.2 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.7.1 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.7.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.6.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.5.3 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.5.2 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.5.1 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.5.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.4.1 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb
rails_template_18f-0.4.0 lib/generators/rails_template18f/active_storage/templates/app/jobs/file_scan_job.rb