Current section

Files

Jump to
glats src glats@settings.erl
Raw

src/glats@settings.erl

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