Current section
Files
Jump to
Current section
Files
lib/virtuoso_web/controllers/webhook_controller.ex
defmodule VirtuosoWeb.WebhookController do
use VirtuosoWeb, :controller
def create(conn, params) do
params
|> Medium.handle()
send_resp(conn, 200, "EVENT_RECEIVED")
end
def verify(conn, %{"hub.mode" => mode, "hub.verify_token" => token, "hub.challenge" => challenge}) do
with :ok <- verify_mode(mode),
:ok <- verify_token(token),
{:ok, challenge} <- verify_challenge(challenge) do
send_resp(conn, 200, challenge)
else
{:error, error} -> send_resp(conn, 403, error)
end
end
defp verify_mode("subscribe"), do: :ok
defp verify_mode(_), do: {:error, "Must be in subscribe mode"}
defp verify_token("asdf"), do: :ok
defp verify_token(_), do: {:error, "Failed token verification"}
defp verify_challenge(challenge) when is_nil(challenge), do: {:error, "Missing challenge param"}
defp verify_challenge(challenge), do: {:ok, challenge}
end