Current section

Files

Jump to
ex_ussd lib utils.ex
Raw

lib/utils.ex

defmodule ExUssd.Utils do
@doc false
def call_menu_callback(
%ExUssd.Menu{} = menu,
%{} = api_parameters \\ %{},
should_handle \\ false
) do
menu.callback.(api_parameters, should_handle)
end
@doc """
This a helper function that helps simulate ussd call
## Example
iex> ExUssd.Utils.simulate(menu: ExUssd.Menu.render(
...> name: "Home",
...> handler: fn menu, _api_parameters, _should_handle ->
...> menu
...> |> Map.put(:title, "Welcome")
...> end
...>),
...> text: "")
{:ok, "Welcome"}
"""
def simulate(menu: menu, text: text) do
internal_routing = %{text: text, session_id: "session_01", service_code: "*544#"}
api_parameters = %{
"text" => internal_routing.text
}
route =
ExUssd.Routes.get_route(%{
text: internal_routing.text,
service_code: internal_routing.service_code
})
%{display: menu_string} =
EXUssd.Common.goto(
internal_routing: internal_routing,
menu: menu,
api_parameters: api_parameters,
route: route
)
{:ok, menu_string}
end
end