Packages
messenger_bot
1.2.0
1.3.0
1.2.0
retired
1.1.0
retired
1.0.0
retired
1.0.0-rc.8
retired
1.0.0-rc.7
retired
1.0.0-rc.6
retired
1.0.0-rc.5
retired
1.0.0-rc.4
retired
1.0.0-rc.3
retired
1.0.0-rc.2
retired
1.0.0-rc.1
retired
1.0.0-beta9
retired
1.0.0-beta8
retired
1.0.0-beta7
retired
1.0.0-beta6
retired
1.0.0-beta5
retired
1.0.0-beta4
retired
1.0.0-beta3
retired
1.0.0-beta2
retired
1.0.0-beta10
retired
1.0.0-beta1
retired
0.9.2
retired
0.9.1
retired
0.9.0
retired
0.8.2
retired
0.8.1
retired
0.8.0
retired
0.7.3
retired
0.7.2
retired
0.7.1
retired
0.7.0
retired
0.6.0
retired
0.5.2
retired
0.5.1
retired
0.5.0
retired
0.4.0
retired
0.3.0
retired
0.2.1
retired
0.2.0
retired
0.1.0
retired
Unofficial Facebook Messenger Platform chatbot client and webhook handler
Retired package: Deprecated
Current section
Files
Jump to
Current section
Files
lib/messenger_bot/client/middlewares/bearer_auth.ex
defmodule MessengerBot.Client.Middleware.BearerAuth do
@moduledoc false
############################################################################
# Tesla Middleware implementation for Bearer Auth Headers #
# Middleware doesn't block the call when auth token not found for page ref,#
# it
############################################################################
alias MessengerBot.Config
@behaviour Tesla.Middleware
def call(env, next, _opts) do
case Keyword.get(env.query, :access_token) do
nil -> continue_with_credentials_from_page_ref(env, next)
token -> continue_with_auth_header(env, next, token)
end
end
defp continue_with_credentials_from_page_ref(env, next) do
case page_access_token(env.opts) do
{:ok, token} -> continue_with_auth_header(env, next, token)
{:error, reason} -> {:error, reason}
end
end
defp page_access_token(opts) do
app_id = Keyword.get(opts, :app_id, "")
page_id = Keyword.get(opts, :page_id, "")
case Config.page_access_token(app_id, page_id) do
"" -> {:error, %{access_token: "Not found for app_id: #{app_id}, page_id: #{page_id}"}}
val -> {:ok, val}
end
end
defp continue_with_auth_header(env, next, token) do
env
|> Tesla.put_header("Authorization", "Bearer #{token}")
|> Tesla.run(next)
end
end