Current section

Files

Jump to
messenger_bot lib messenger_bot webhooks setup.ex
Raw

lib/messenger_bot/webhooks/setup.ex

defmodule MessengerBot.Webhook.Setup do
@moduledoc """
MessengerBot webhook handlers
"""
alias MessengerBot.Config
@type messenger_webhook_setup_params :: %{String.t => String.t,
String.t => String.t, String.t => String.t}
@spec process(messenger_webhook_setup_params | any()) ::
{:ok, String.t} | {:error, map()}
def process(%{"hub.challenge" => challenge, "hub.mode" => "subscribe",
"hub.verify_token" => token} = _params) do
with :ok <- verify_token(token) do
{:ok, challenge}
else
{:error, reason} -> {:error, reason}
end
end
def process(%{"hub.challenge" => challenge, "hub.mode" => "unsubscribe",
"hub.verify_token" => token} = _params) do
with :ok <- verify_token(token) do
{:ok, challenge}
else
{:error, reason} -> {:error, reason}
end
end
def process(_) do
{:error, %{"query" => "Missing param(s)!"}}
end
defp verify_token(token) do
if Config.setup_token == token do
:ok
else
{:error,
%{"hub.verify_token" => "Token(#{token}) is not valid!"}}
end
end
end