Sha256: 81e473ec4249100a45c7b55ddca8f41aca03af10081a5e3133bb99a5ec108f77

Contents?: true

Size: 1.54 KB

Versions: 3

Compression:

Stored size: 1.54 KB

Contents

require "logger"

require_relative "antivirus/version"
require_relative "antivirus/scanner"
require_relative "antivirus/scan_result"
require_relative "antivirus/scanner_adapter"
require_relative "antivirus/adapters/null_scanner_adapter"

module Ddr
  module Antivirus

    class Error < ::StandardError; end

    class ResultError < Error
      attr_reader :result
      def initialize(result)
        super(result.to_s)
        @result = result
      end
    end

    class VirusFoundError < ResultError; end

    class ScannerError < ResultError; end

    class << self
      attr_accessor :logger, :scanner_adapter

      def configure
        yield self
      end

      def scan(path)
        Scanner.scan(path)
      end

      def scanner
        s = Scanner.new
        block_given? ? yield(s) : s
      end

      def test_mode!
        configure do |config|
          config.logger = Logger.new(File::NULL)
          config.scanner_adapter = :null
        end
      end

      # @return [Class] the scanner adapter class
      def get_adapter
        if scanner_adapter.nil?
          raise Error, "`Ddr::Antivirus.scanner_adapter` is not configured."
        end
        require_relative "antivirus/adapters/#{scanner_adapter}_scanner_adapter"
        adapter_name = scanner_adapter.to_s.capitalize + "ScannerAdapter"
        self.const_get(adapter_name, false)
      end
    end

    self.logger = if defined?(Rails) && Rails.logger
                    Rails.logger
                  else
                    Logger.new(STDERR)
                  end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ddr-antivirus-2.1.1 lib/ddr/antivirus.rb
ddr-antivirus-2.0.0 lib/ddr/antivirus.rb
ddr-antivirus-2.0.0.rc2 lib/ddr/antivirus.rb