# `Honeybadger.Filter`
[🔗](https://github.com/honeybadger-io/honeybadger-elixir/blob/v0.30.1/lib/honeybadger/filter.ex#L1)

Specification of user overrideable filter functions.

See moduledoc for `Honeybadger.Filter.Mixin` for details on implementing
your own filter.

# `filter_breadcrumbs`

```elixir
@callback filter_breadcrumbs([Honeybadger.Breadcrumbs.Breadcrumb.t()]) :: [
  Honeybadger.Breadcrumbs.Breadcrumb.t()
]
```

Filter breadcrumbs. This filter function receives a list of Breadcrumb
structs. You could use any Enum function to constrain the set. Let's say you
want to remove any breadcrumb that have metadata that contain SSN:

def filter_breadcrumbs(breadcrumbs) do
  Enum.reject(breadcrumbs, fn breadcrumb -> do
    Map.has_key?(breadcrumb.metadata, :ssn)
  end)
end

# `filter_cgi_data`

```elixir
@callback filter_cgi_data(map()) :: map()
```

For applications that use `Honeybadger.Plug`, filter the cgi_data.

`cgi_data` is a map of `String.t` to `String.t` which includes HTTP headers
and other pre-defined request data (including `PATH_INFO`, `QUERY_STRING`,
`SERVER_PORT` etc.).

# `filter_context`

```elixir
@callback filter_context(map()) :: map()
```

Filter the context Map.  The context is a map of application supplied data.

# `filter_error_message`

```elixir
@callback filter_error_message(String.t()) :: String.t()
```

Filter the error message string.  This is the message from the most
recently thrown error.

# `filter_params`

```elixir
@callback filter_params(map()) :: map()
```

For applications that use `Honeybadger.Plug`, filters the query parameters.
The parameters is a map of `String.t` to `String.t`, e.g.:

    %{"user_name" => "fred", "password" => "12345"}

# `filter_session`

```elixir
@callback filter_session(map()) :: map()
```

For applications that use `Honeybadger.Plug`, filter the session.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
