Packages
telegex
1.6.0
1.9.0-rc.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.3-dev
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-rc.10
1.0.0-rc.9
1.0.0-rc.8
1.0.0-rc.7
1.0.0-rc.6
1.0.0-rc.5
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.1.0-rc.11
0.1.0-rc.10
0.1.0-rc.9
0.1.0-rc.8
0.1.0-rc.7
0.1.0-rc.6
0.1.0-rc.5
0.1.0-rc.4
0.1.0-rc.3
0.1.0-rc.2
0.1.0-rc.1
0.0.4
0.0.3
0.0.2
0.0.1
A Telegram bot framework, with its client-side based on data and code generation, boasts unparalleled adaptation speed and correctness for new versions.
Current section
Files
Jump to
Current section
Files
lib/telegex/caller/adapter/httpoison.ex
defmodule Telegex.Caller.Adapter.HTTPoison do
@moduledoc "HTTPoison based caller adapter."
use Telegex.Caller.Adapter
@type httposion_resp :: HTTPoison.Response.t()
@type httposion_err :: %{reason: atom}
@impl true
def call(method, params, opts) do
url = build_url(method)
json_body = params |> Enum.into(%{}) |> Jason.encode!()
url |> request(json_body, opts) |> parse_response()
end
defp request(url, json_body, _opts) do
apply(HTTPoison, :post, [url, json_body, [@json_header], options()])
end
@spec parse_response({:ok, httposion_resp} | {:error, httposion_err}) ::
{:ok, any} | {:error, error}
defp parse_response({:ok, %{body: body} = _response}) do
%{ok: ok, result: result, error_code: error_code, description: description} =
struct_response(body)
if ok do
{:ok, result}
else
{:error, %Error{error_code: error_code, description: description}}
end
end
defp parse_response({:error, %{reason: reason} = _error}) do
{:error, %RequestError{reason: reason}}
end
end