Packages
gnat
1.10.0
1.16.0
1.15.2
1.15.1
1.15.0
1.14.1
1.14.0
1.14.0-rc1
1.14.0-rc0
1.13.1
1.13.0
1.12.1
1.12.0
1.11.1
1.11.0
1.10.2
1.10.2-rc1
1.10.2-rc0
1.10.1
1.10.0
1.9.1
1.9.0
1.8.5
1.8.4
1.8.3
1.8.2
1.8.1
1.7.1
1.7.0
1.6.0
1.5.2
1.5.1
1.5.0
1.4.0
1.3.0
1.3.0-rc0
1.2.1
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
0.7.0
0.6.1
0.6.0
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.2
0.4.1
0.4.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
A nats client in pure elixir. Resilience, Performance, Ease-of-Use.
Current section
Files
Jump to
Current section
Files
lib/gnat/jetstream/api/util.ex
defmodule Gnat.Jetstream.API.Util do
@moduledoc false
@default_inbox_prefix "_INBOX."
def request(conn, topic, payload) do
with {:ok, %{body: body}} <- Gnat.request(conn, topic, payload),
{:ok, decoded} <- Jason.decode(body) do
case decoded do
%{"error" => err} ->
{:error, err}
other ->
{:ok, other}
end
end
end
def to_datetime(nil), do: nil
def to_datetime(str) do
{:ok, datetime, _} = DateTime.from_iso8601(str)
datetime
end
def to_sym(nil), do: nil
def to_sym(str) when is_binary(str) do
String.to_existing_atom(str)
end
def put_if_exist(target_map, target_key, source_map, source_key) do
case Map.fetch(source_map, source_key) do
{:ok, value} -> Map.put(target_map, target_key, value)
_ -> target_map
end
end
def valid_name?(name) do
!String.contains?(name, [".", "*", ">", " ", "\t"])
end
def invalid_name_message do
"cannot contain '.', '>', '*', spaces or tabs"
end
def decode_base64(nil), do: nil
def decode_base64(data), do: Base.decode64!(data)
def reply_inbox(prefix \\ @default_inbox_prefix)
def reply_inbox(nil), do: reply_inbox()
def reply_inbox(prefix), do: prefix <> nuid()
def nuid() do
:crypto.strong_rand_bytes(12) |> Base.url_encode64()
end
end