Fix Gaiia webhook: eventName field, payload extraction, add header logging
This commit is contained in:
parent
4610d86043
commit
05cdc79124
1 changed files with 10 additions and 2 deletions
|
|
@ -13,14 +13,21 @@ defmodule ToweropsWeb.Api.V1.GaiiaWebhookController do
|
|||
alias Towerops.Gaiia.Webhooks
|
||||
alias Towerops.Integrations
|
||||
|
||||
require Logger
|
||||
|
||||
def create(conn, %{"organization_id" => organization_id}) do
|
||||
# Log all headers for debugging webhook signature issues
|
||||
Logger.info("Gaiia webhook headers: #{inspect(conn.req_headers)}")
|
||||
|
||||
with {:ok, integration} <- get_gaiia_integration(organization_id),
|
||||
{:ok, secret} <- get_webhook_secret(integration),
|
||||
{:ok, raw_body} <- get_raw_body(conn),
|
||||
:ok <- verify_signature(conn, raw_body, secret),
|
||||
{:ok, event} <- get_event(conn.body_params) do
|
||||
data = Map.get(conn.body_params, "data", %{})
|
||||
payload = %{"entity_id" => Map.get(data, "id"), "data" => data}
|
||||
# Gaiia sends object data in "payload" field; fall back to "data" for compat
|
||||
data = Map.get(conn.body_params, "payload", Map.get(conn.body_params, "data", %{}))
|
||||
entity_id = Map.get(conn.body_params, "objectId", Map.get(data, "id"))
|
||||
payload = %{"entity_id" => entity_id, "data" => data}
|
||||
|
||||
Webhooks.process_event(organization_id, event, payload)
|
||||
|
||||
|
|
@ -109,6 +116,7 @@ defmodule ToweropsWeb.Api.V1.GaiiaWebhookController do
|
|||
end
|
||||
end
|
||||
|
||||
defp get_event(%{"eventName" => event}) when is_binary(event), do: {:ok, event}
|
||||
defp get_event(%{"event" => event}) when is_binary(event), do: {:ok, event}
|
||||
defp get_event(_), do: {:error, :missing_event}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue