Current section

Files

Jump to
mist src mist.erl
Raw

src/mist.erl

-module(mist).
-compile(no_auto_import).
-export([serve/2, main/0]).
-spec serve(
integer(),
fun((glisten@tcp:handler_message(), glisten@tcp:loop_state(gleam@option:option(gleam@otp@process:timer()))) -> gleam@otp@actor:next(glisten@tcp:loop_state(gleam@option:option(gleam@otp@process:timer()))))
) -> {ok, nil} | {error, glisten:start_error()}.
serve(Port, Handler) ->
glisten:serve(Port, Handler, none).
-spec main() -> nil.
main() ->
Empty_response = begin
_pipe = gleam@http@response:new(200),
gleam@http@response:set_body(_pipe, <<>>)
end,
Not_found = begin
_pipe@1 = gleam@http@response:new(404),
gleam@http@response:set_body(_pipe@1, <<>>)
end,
{ok, _@4} = case serve(
8080,
mist@http:handler(
fun(Req) ->
case {erlang:element(2, Req),
gleam@http@request:path_segments(Req)} of
{get, []} ->
Empty_response;
{get, [<<"user"/utf8>>, Id]} ->
_pipe@2 = gleam@http@response:new(200),
gleam@http@response:set_body(_pipe@2, <<Id/binary>>);
{post, [<<"user"/utf8>>]} ->
_pipe@3 = gleam@http@response:new(200),
gleam@http@response:set_body(
_pipe@3,
erlang:element(4, Req)
);
{_@1, _@2} ->
Not_found
end
end
)
) of
{ok, _@3} -> {ok, _@3};
_try ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _try,
module => <<"mist"/utf8>>,
function => <<"main"/utf8>>,
line => 29})
end,
gleam@erlang:sleep_forever().