-module(glats@settings). -compile([no_auto_import, nowarn_unused_vars]). -export([new/2, defaults/0, set_host/2, set_port/2, set_ca/2, set_client_cert/3, set_no_tls/1]). -export_type([settings/0]). -type settings() :: {settings, gleam@option:option(binary()), gleam@option:option(integer()), gleam@option:option(boolean()), gleam@option:option(gleam@map:map_(binary(), binary()))}. -spec new(binary(), integer()) -> settings(). new(Host, Port) -> {settings, {some, Host}, {some, Port}, none, none}. -spec defaults() -> settings(). defaults() -> new(<<"localhost"/utf8>>, 4222). -spec set_host(settings(), binary()) -> settings(). set_host(Settings, Host) -> erlang:setelement(2, Settings, {some, Host}). -spec set_port(settings(), integer()) -> settings(). set_port(Settings, Port) -> erlang:setelement(3, Settings, {some, Port}). -spec set_ca(settings(), binary()) -> settings(). set_ca(Settings, Cafile) -> erlang:setelement( 5, erlang:setelement(4, Settings, {some, true}), {some, begin _pipe = erlang:element(5, Settings), _pipe@1 = gleam@option:unwrap(_pipe, gleam@map:new()), gleam@map:insert(_pipe@1, <<"cacertfile"/utf8>>, Cafile) end} ). -spec set_client_cert(settings(), binary(), binary()) -> settings(). set_client_cert(Settings, Certfile, Keyfile) -> erlang:setelement( 5, erlang:setelement(4, Settings, {some, true}), {some, begin _pipe = erlang:element(5, Settings), _pipe@1 = gleam@option:unwrap(_pipe, gleam@map:new()), _pipe@2 = gleam@map:insert( _pipe@1, <<"certfile"/utf8>>, Certfile ), gleam@map:insert(_pipe@2, <<"keyfile"/utf8>>, Keyfile) end} ). -spec set_no_tls(settings()) -> settings(). set_no_tls(Settings) -> erlang:setelement(5, erlang:setelement(4, Settings, {some, false}), none).