README.md

# GhWebhookPlug

This Plug makes it easy to listen to Github webhook requests in your Elixir
apps and trigger actions.

Features:

* Configurable HTTP endpoint
* Verifies authenticity using webhook secret
* Responses are handled for you - just write business logic

## Installation

  1. Add gh_webhook_plug to your list of dependencies in `mix.exs`:

        def deps do
          [{:gh_webhook_plug, "~> 0.0.1"}]
        end

  2. Ensure gh_webhook_plug is started before your application:

        def application do
          [applications: [:gh_webhook_plug]]
        end

## Usage

```elixir
defmodule DemoPlugApp do
  use Plug.Builder

  # Use GhWebhookPlug and pass it 3 things:
  # 1. secret : the secret you configured when you set up the Github webhook
  # 2. path : The HTTP endpoint which should listen for webhook requests
  # 3. action: Tuple containing the module and function which should handle the webhook payload
  plug GhWebhookPlug, secret: "secret", path: "/gh-webhook", action: {__MODULE__, :gh_webhook}

  # You can add other plugs as you normally would.
  # The connection reaches this plug if the webhook's path is not matched above.
  plug :next_in_chain

  def gh_webhook(payload) do
    # Do something with payload
  end
end
```

## TODO

* Add polymorphic handlers for different types of GH events which are overridable by user.

## License

MIT