-module(glats@message). -compile([no_auto_import, nowarn_unused_vars]). -export([new/2, set_reply_to/2, set_header/3]). -export_type([message/0]). -type message() :: {message, binary(), gleam@map:map_(binary(), binary()), gleam@option:option(binary()), binary()}. -spec new(binary(), binary()) -> message(). new(Subject, Body) -> {message, Subject, gleam@map:new(), none, Body}. -spec set_reply_to(message(), binary()) -> message(). set_reply_to(Message, Reply_to) -> erlang:setelement(4, Message, {some, Reply_to}). -spec set_header(message(), binary(), binary()) -> message(). set_header(Message, Key, Value) -> erlang:setelement( 3, Message, begin _pipe = erlang:element(3, Message), gleam@map:insert(_pipe, Key, Value) end ).