-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).