Class: ClamChowder::Scanner

Inherits:
Object
  • Object
show all
Defined in:
lib/clam_chowder/scanner.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(backend = ClamChowder.default_backend) ⇒ Scanner

Returns a new instance of Scanner.



12
13
14
# File 'lib/clam_chowder/scanner.rb', line 12

def initialize(backend = ClamChowder.default_backend)
  @backend ||= ClamChowder::Backend.lookup(backend).new
end

Class Method Details

.infected_stream?(io) ⇒ Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/clam_chowder/scanner.rb', line 8

def self.infected_stream?(io)
  ::ClamChowder.infected_stream?(io) # XXX compatibility
end

Instance Method Details

#scan_io(readable) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/clam_chowder/scanner.rb', line 16

def scan_io(readable)
  begin
    Tempfile.open('clam_chowder_temp', encoding: 'BINARY') do |file|
      while bytes = readable.read(1024 * 32)
        file.write(bytes.strip)
      end
      file.rewind
      file.chmod(0644)
      @backend.scan_file(file.path)
    end
  rescue => e
    raise ScanException.new(e)
  end
ensure
  readable.rewind if readable.respond_to?(:rewind)
end