Current section
Files
Jump to
Current section
Files
src/glats@internal@decoder.erl
-module(glats@internal@decoder).
-compile([no_auto_import, nowarn_unused_vars]).
-export([headers/1, reply_to/1, decode_msg/1]).
-spec atom_field(
binary(),
fun((gleam@dynamic:dynamic()) -> {ok, GHM} |
{error, list(gleam@dynamic:decode_error())})
) -> fun((gleam@dynamic:dynamic()) -> {ok, GHM} |
{error, list(gleam@dynamic:decode_error())}).
atom_field(Key, Value) ->
gleam@dynamic:field(erlang:binary_to_atom(Key), Value).
-spec headers(gleam@dynamic:dynamic()) -> {ok,
gleam@map:map_(binary(), binary())} |
{error, list(gleam@dynamic:decode_error())}.
headers(Data) ->
_pipe = Data,
_pipe@1 = (atom_field(
<<"headers"/utf8>>,
gleam@dynamic:list(
gleam@dynamic:tuple2(
fun gleam@dynamic:string/1,
fun gleam@dynamic:string/1
)
)
))(_pipe),
_pipe@2 = gleam@result:map(_pipe@1, fun gleam@map:from_list/1),
gleam@result:'or'(_pipe@2, {ok, gleam@map:new()}).
-spec reply_to(gleam@dynamic:dynamic()) -> {ok, gleam@option:option(binary())} |
{error, list(gleam@dynamic:decode_error())}.
reply_to(Data) ->
_pipe = Data,
_pipe@1 = (gleam@dynamic:optional(
atom_field(<<"reply_to"/utf8>>, fun gleam@dynamic:string/1)
))(_pipe),
gleam@result:'or'(_pipe@1, {ok, none}).
-spec decode_msg(gleam@dynamic:dynamic()) -> {ok, glats@message:message()} |
{error, list(gleam@dynamic:decode_error())}.
decode_msg(Data) ->
_pipe = Data,
(gleam@dynamic:decode4(
fun(Field@0, Field@1, Field@2, Field@3) -> {message, Field@0, Field@1, Field@2, Field@3} end,
atom_field(<<"topic"/utf8>>, fun gleam@dynamic:string/1),
fun headers/1,
fun reply_to/1,
atom_field(<<"body"/utf8>>, fun gleam@dynamic:string/1)
))(_pipe).