README.md

# Siftsciex Plug

The Siftsciex Plug provides a very small API and logic for helping process Sift Science Decisions.  If you need to handle a Decision Web Hook from Sift Science then you may find this useful.

The Decision Plug really does three things:

1. Checks for the Sift Science Signature in the request
2. Processes the body and transforms it into a `Siftsciex.Decision.t` struct
3. Maps specific endpoints to specific handlers

## Installation

[Available in Hex](https://hex.pm/packages/siftsciex_plug), the package can be installed
by adding `siftsciex_plug` to your list of dependencies in `mix.exs`:

```elixir
def deps do
  [
    {:siftsciex_plug, "~> 0.1.0"}
  ]
end
```

## Example

The first thing you need to do is configure the expected Signature from Sift Science:

```elixir
  config :siftsciex_plug,
    hook_key: <sift_science_signature>
```

Then you can configure the `Plug` to process and route specific paths for you.

```elixir
  alias Siftsciex.DecisionPlug

  forward "/sift_science", DecisionPlug, %{
    "bad_user" => {User, :sift_ban},
    "bad_listing" => {Listing, :sift_delete}
  }
```

Documentation can be generated with [ExDoc](https://github.com/elixir-lang/ex_doc)
and published on [HexDocs](https://hexdocs.pm). Once published, the docs can
be found at [https://hexdocs.pm/siftsciex_plug](https://hexdocs.pm/siftsciex_plug).