Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions lib/conn/provider_params.ex
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ defmodule Agala.Provider.Telegram.Conn.ProviderParams do
token: nil,
poll_timeout: nil, #timeout for poller to receive data - infinity
response_timeout: nil, #timeout for responser to receive response - normal
hackney_opts: Keyword.new
hackney_opts: Keyword.new,
host: nil
]

@typedoc """
Expand All @@ -36,7 +37,8 @@ defmodule Agala.Provider.Telegram.Conn.ProviderParams do
token: String.t,
poll_timeout: integer | :infinity,
response_timeout: integer | :infinity,
hackney_opts: Keyword.t
hackney_opts: Keyword.t,
host: String.t
}

@behaviour Access
Expand Down
30 changes: 20 additions & 10 deletions lib/helpers.ex
Original file line number Diff line number Diff line change
@@ -1,14 +1,24 @@
defmodule Agala.Provider.Telegram.Helpers do
alias Agala.Provider.Telegram.Conn.Response
@base_url "https://api.telegram.org/bot"

defp base_url(route) do
fn token -> @base_url <> token <> route end
defp base_url(%Agala.Provider.Telegram.Conn.ProviderParams{} = params) do
"https://" <> params.host <> params.token
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Упадёт если хост пустой

end

defp base_url(conn) do
"https://" <> (conn.request_bot_params.provider_params.host) <> "/bot"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Упадёт если хост пустой

end

defp base_url(route, _conn) do
fn params ->
"https://" <> params.host <> "/bot" <> params.token <> route
end
end

defp create_body(map, opts) when is_map(map) do
Map.merge(map, Enum.into(opts, %{}), fn _, v1, _ -> v1 end)
end

defp create_body_multipart(map, opts) when is_map(map) do
multipart =
create_body(map, opts)
Expand All @@ -24,7 +34,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :post,
payload: %{
url: base_url("/sendMessage"),
url: base_url("/sendMessage", conn),
body: create_body(%{chat_id: chat_id, text: message}, opts),
headers: [{"Content-Type", "application/json"}]
}
Expand All @@ -36,7 +46,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :post,
payload: %{
url: base_url("/deleteMessage"),
url: base_url("/deleteMessage", conn),
body: create_body(%{chat_id: chat_id, message_id: message_id}, []),
headers: [{"Content-Type", "application/json"}]
}
Expand All @@ -48,7 +58,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :post,
payload: %{
url: base_url("/sendChatAction"),
url: base_url("/sendChatAction", conn),
body: create_body(%{chat_id: chat_id, action: action}, []),
headers: [{"Content-Type", "application/json"}]
}
Expand All @@ -59,7 +69,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :post,
payload: %{
url: base_url("/kickChatMember"),
url: base_url("/kickChatMember", conn),
body: create_body(%{chat_id: chat_id, user_id: user_id}, opts),
headers: [{"Content-Type", "application/json"}]
}
Expand All @@ -71,7 +81,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :post,
payload: %{
url: base_url("/sendPhoto"),
url: base_url("/sendPhoto", conn),
body: create_body_multipart(%{chat_id: chat_id, photo: {:file, photo}}, opts)
}
})
Expand All @@ -82,7 +92,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :post,
payload: %{
url: base_url("/sendDocument"),
url: base_url("/sendDocument", conn),
body: create_body_multipart(%{chat_id: chat_id, document: {:file, document}}, opts)
}
})
Expand All @@ -93,7 +103,7 @@ defmodule Agala.Provider.Telegram.Helpers do
Map.put(conn, :response, %Response{
method: :get,
payload: %{
url: base_url("/getFile"),
url: base_url("/getFile", conn),
body: create_body(%{file_id: file_id}, []),
headers: [{"Content-Type", "application/json"}]
}
Expand Down
4 changes: 2 additions & 2 deletions lib/receiver.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ defmodule Agala.Provider.Telegram.Receiver do
use Agala.Bot.Receiver
alias Agala.BotParams

defp get_updates_url(%BotParams{provider_params: %{token: token}}) do
"https://api.telegram.org/bot" <> token <> "/getUpdates"
defp get_updates_url(%BotParams{provider_params: %{token: token, host: host}}) do
"https://" <> host <> "/bot" <> token <> "/getUpdates"
end

defp get_updates_body(%BotParams{private: %{offset: offset, timeout: timeout}}) do
Expand Down
3 changes: 1 addition & 2 deletions lib/responser.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ defmodule Agala.Provider.Telegram.Responser do
defp create_body(_), do: ""

defp create_url(%Agala.Conn{response: %{payload: %{url: url}}}, bot_params) when is_function(url) do
url.(bot_params.provider_params.token)
url.(bot_params.provider_params)
end

@doc """
Expand All @@ -25,4 +25,3 @@ defmodule Agala.Provider.Telegram.Responser do
end
end
end

4 changes: 2 additions & 2 deletions lib/telegram.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ defmodule Agala.Provider.Telegram do
Module providing adapter for Telegram
"""
def base_url(conn) do
"https://api.telegram.org/bot" <> conn.request_bot_params.provider_params.token
"https://" <> conn.request_bot_params.provider_params.host <> "/bot" <> conn.request_bot_params.provider_params.token
end

def base_file_url(conn) do
"https://api.telegram.org/file/bot" <> conn.request_bot_params.provider_params.token
"https://" <> conn.request_bot_params.provider_params.host <> "/file/bot" <> conn.request_bot_params.provider_params.token
end

def init(bot_params, module) do
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Agala.Provider.Telegram.Mixfile do
def project do
[
app: :agala_telegram,
version: "0.1.2",
version: "0.1.3",
elixir: "~> 1.5",
start_permanent: Mix.env == :prod,
description: description(),
Expand Down