# Clamxir [![Build Status](](

Database wrapper for clamav based on

This package depends of clamd.

## Installation

If [available in Hex](, the package can be installed
by adding `clamxir` to your list of dependencies in `mix.exs`:

def deps do
    {:clamxir, "~> 0.1.4"}

## Usage

Clamxir receive the configs on each public method, and based on the configs,
will perform their task.

The config file by default is the struct `%Clamxir{}`.  The default values of
the structure are:

  daemonize: false,
  stream: false,
  check: fase

Set daemonize to true, in order to use one instance of the clamav instead of
the creation of an instance each time that the scanner is invoke.

Check is a flag to check if the scanner is available.  Set to true in order to

  iex>{}, "/path/file")

Stream true, will pass the argument --stream to clamdscan.

  iex>{stream: true}, "/path/file")

check if the scanner exists, before try to use it.

  iex>{check: true}, "/path/file")

## Integration with Phoenix

1.  Install as dependency

        {:clamxir, "~> 0.1.4"}
2.  Use in the controller action where the files are uploaded

      def upload(conn, params) do
        file = params["index"]["file"]
        # Requires to have clamavdscann to work
        case{daemonize: true}, file.path) do
          true -> 
            # Process the file and ... 
            |> put_flash(:info,  "Created successfully")
            |> redirect(to: "/") 
          false -> conn
            |> put_flash(:error,  "Virus!!")
           |> redirect(to: "/") 
For a working sample please refer to:

- Add Logger features

Documentation can be generated with [ExDoc](
and published on [HexDocs]( Once published, the docs can
be found at [](