cover/Elixir.DaProductAppWeb.SaasKitWebhookController.html

1
:-(
defmodule DaProductAppWeb.SaasKitWebhookController do
2
:-(
use DaProductAppWeb, :controller
3
4 alias DaProductApp.SaasKit.WebhookHandler
5
6 @doc """
7 Handle incoming SaaS Kit webhooks
8 """
9 def webhook(conn, _params) do
10
:-(
payload = conn.assigns.raw_body
11
:-(
signature = get_req_header(conn, "x-saaskit-signature") |> List.first()
12
13
:-(
case WebhookHandler.handle_webhook(payload, signature) do
14 {:ok, :processed} ->
15 conn
16 |> put_status(:ok)
17
:-(
|> json(%{status: "success"})
18
19 {:ok, :ignored} ->
20 conn
21 |> put_status(:ok)
22
:-(
|> json(%{status: "ignored"})
23
24 {:error, :invalid_signature} ->
25 conn
26 |> put_status(:unauthorized)
27
:-(
|> json(%{error: "Invalid signature"})
28
29 {:error, :invalid_json} ->
30 conn
31 |> put_status(:bad_request)
32
:-(
|> json(%{error: "Invalid JSON"})
33
34 {:error, _reason} ->
35 conn
36 |> put_status(:internal_server_error)
37
:-(
|> json(%{error: "Internal server error"})
38 end
39 end
40 end
Line Hits Source