Packages
messenger_bot
1.0.0-rc.5
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/base.ex
defmodule MessengerBot.Client.Base do
@moduledoc false
############################################################################
# MessengerBot Client core implementation #
############################################################################
use Tesla, only: ~w(get post delete)a
alias MessengerBot.Util.JSON
plug Tesla.Middleware.BaseUrl, "https://graph.facebook.com"
plug MessengerBot.Client.Middleware.BearerAuth
plug MessengerBot.Client.Middleware.StructResponse
plug Tesla.Middleware.JSON, decode: &JSON.decode/1, encode: &JSON.encode/1
plug MessengerBot.Client.Middleware.EventBus
@api_version "v2.12"
def rget(path, query_params, opts) do
get(
full_path(path),
query: query_params,
opts: opts_with_keys(opts)
)
end
def rpost(path, req, opts) do
post(
full_path(path),
req,
opts: opts_with_keys(opts)
)
end
def rdelete(path, req, opts) do
delete(
full_path(path),
body: req,
opts: opts_with_keys(opts)
)
end
############################################################################
# PRIVATE #
############################################################################
defp full_path(path) do
"/#{@api_version}#{path}"
end
defp opts_with_keys({app_id, page_id, topic, tx_id}) do
tx_id = if is_nil(tx_id), do: unique_id(), else: tx_id
[app_id: app_id, page_id: page_id, eb_topic: topic, eb_tx_id: tx_id]
end
defp unique_id do
UUID.uuid4()
end
end