Sha256: 27cfaad2c1468a269291b63147d45cae619429f1b1ada336ca085f01db6862dd

Contents?: true

Size: 891 Bytes

Versions: 14

Compression:

Stored size: 891 Bytes

Contents

module Sufia
  module GenericFile
    module VirusCheck
      extend ActiveSupport::Concern

      included do
        validate :detect_viruses
      end

      # Default behavior is to raise a validation error and halt the save if a virus is found
      def detect_viruses
        return unless content.changed?
        Sufia::GenericFile::Actor.virus_check(local_path_for_content)
        true
      rescue Sufia::VirusFoundError => virus
        logger.warn(virus.message)
        errors.add(:base, virus.message)
        false
      end

      private

        def local_path_for_content
          if content.content.respond_to?(:path)
            content.content.path
          else
            Tempfile.open('') do |t|
              t.binmode
              t.write(content.content)
              t.close
              t.path
            end
          end
        end
    end
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
sufia-models-6.7.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.6.1 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.6.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.5.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.4.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.3.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.2.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.1.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.0.0 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-6.0.0 sufia-models/app/models/concerns/sufia/generic_file/virus_check.rb
sufia-6.0.0.rc4 sufia-models/app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.0.0.rc4 app/models/concerns/sufia/generic_file/virus_check.rb
sufia-6.0.0.rc3 sufia-models/app/models/concerns/sufia/generic_file/virus_check.rb
sufia-models-6.0.0.rc3 app/models/concerns/sufia/generic_file/virus_check.rb