Current section

Files

Jump to
glats src glats@internal@js.erl
Raw

src/glats@internal@js.erl

-module(glats@internal@js).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([map_code_to_error/1, decode_headers/1, decode_b64_headers/1, map_glats_error_to_jetstream/1]).
-spec map_code_to_error({integer(), binary()}) -> glats@jetstream:jetstream_error().
map_code_to_error(Data) ->
case erlang:element(1, Data) of
10039 ->
{jetstream_not_enabled_for_account, erlang:element(2, Data)};
10076 ->
{jetstream_not_enabled, erlang:element(2, Data)};
10023 ->
{insufficient_resources, erlang:element(2, Data)};
10052 ->
{invalid_stream_config, erlang:element(2, Data)};
10056 ->
{stream_name_in_subject_does_not_match, erlang:element(2, Data)};
10058 ->
{stream_name_in_use, erlang:element(2, Data)};
10059 ->
{stream_not_found, erlang:element(2, Data)};
10110 ->
{stream_purge_not_allowed, erlang:element(2, Data)};
10037 ->
{no_message_found, erlang:element(2, Data)};
10014 ->
{consumer_not_found, erlang:element(2, Data)};
10013 ->
{consumer_name_exists, erlang:element(2, Data)};
10105 ->
{consumer_already_exists, erlang:element(2, Data)};
10071 ->
{wrong_last_sequence, erlang:element(2, Data)};
10003 ->
{bad_request, erlang:element(2, Data)};
_ ->
{unknown, erlang:element(1, Data), erlang:element(2, Data)}
end.
-spec decode_header(binary()) -> {ok, {binary(), binary()}} | {error, nil}.
decode_header(Line) ->
case begin
_pipe = Line,
gleam@string:split(_pipe, <<": "/utf8>>)
end of
[Key, Val] ->
{ok, {Key, Val}};
_ ->
{error, nil}
end.
-spec decode_headers(binary()) -> {ok, gleam@dict:dict(binary(), binary())} |
{error, any()}.
decode_headers(Hdrs) ->
_pipe = Hdrs,
_pipe@1 = gleam@string:split(_pipe, <<"\n"/utf8>>),
_pipe@2 = gleam@list:filter_map(_pipe@1, fun decode_header/1),
_pipe@3 = maps:from_list(_pipe@2),
{ok, _pipe@3}.
-spec decode_b64_headers(binary()) -> {ok, gleam@dict:dict(binary(), binary())} |
{error, nil}.
decode_b64_headers(Hdrs) ->
gleam@result:then(
begin
_pipe = gleam@bit_array:base64_decode(Hdrs),
_pipe@1 = gleam@result:map(_pipe, fun gleam@bit_array:to_string/1),
gleam@result:flatten(_pipe@1)
end,
fun(Data) -> decode_headers(Data) end
).
-spec map_glats_error_to_jetstream(glats:error()) -> glats@jetstream:jetstream_error().
map_glats_error_to_jetstream(Err) ->
case Err of
timeout ->
timeout;
no_responders ->
no_responders;
_ ->
{unknown, -1, <<"unknown error"/utf8>>}
end.