multihook 0.1.2

A webhook server
<h1 align="center">
Multihook
</h1>
<p align="center">
    <a href="https://crates.io/crates/multihook">
        <img src="https://img.shields.io/crates/v/multihook?style=for-the-badge">
    </a>
</p>

Multihook is an easy to configure webhook server.

## Installation

With cargo:
```
cargo install multihook
```

## Usage

Just run it via systemd or smth.

```
multihook
```

## Config

The config allows you to configure actions for each endpoint. The config is most likely
stored in `~/.config/multihook` and on Windows maybe in the APPDATA directory (?).
After running the program for the first time the config directory and config file should be created.

```toml
[server]
address = '127.0.0.1:8080'

# the name needs to be unique
[endpoints.ls]
# the path needs to be unique
path = "path/on/the/server"
# a command or a path to the script
action = "ls {{$.filepath}}"
# allows multiple instances of this action to run concurrently
allow_parallel = true

[endpoints.error]
path = "error"
action = "echo '{{$.books.*.title}}'"

[endpoints.testscript]
path = "script"
action = "/home/trivernis/.local/share/multihook/test-script.sh"
allow_parallel = false
# doesn't wait for the command to finish and returns a http response directly
# This setting can be useful if your action takes a very long time to run and would
# cause a timeout
run_detached = true
```

The configured `action` is either a script file or a command.
In both cases placeholders with the syntax `{{query}}` can be used. The query
is the path to required values in the json body of the request. The request body
will also be provided in the environment variable `HOOK_BODY`.

## License

GPL-3