Packages

An easy to use, high performance framework to quickly build APIs for the Gleam programming language

Current section

Files

Jump to
glace src glace@internal@glace_builder.erl
Raw

src/glace@internal@glace_builder.erl

-module(glace@internal@glace_builder).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([new/0, port/2, start_with_context/2]).
-file("/home/ram/code/gleam/glace/src/glace/internal/glace_builder.gleam", 14).
-spec new() -> glace@internal@glace_types:glace_builder(any()).
new() ->
{glace_builder,
4000,
[],
[],
[],
glace@internal@glace_logger:default_logger()}.
-file("/home/ram/code/gleam/glace/src/glace/internal/glace_builder.gleam", 24).
-spec port(glace@internal@glace_types:glace_builder(QSY), integer()) -> glace@internal@glace_types:glace_builder(QSY).
port(Builder, Port) ->
_record = Builder,
{glace_builder,
Port,
erlang:element(3, _record),
erlang:element(4, _record),
erlang:element(5, _record),
erlang:element(6, _record)}.
-file("/home/ram/code/gleam/glace/src/glace/internal/glace_builder.gleam", 28).
-spec start_with_context(glace@internal@glace_types:glace_builder(QTB), QTB) -> gleam@erlang@process:subject(gleam@otp@supervisor:message()).
start_with_context(Builder, Context) ->
_assert_subject = begin
_pipe = fun(Req) ->
Request = glace@internal@glace_request:make_request(
Req,
maps:new(),
Context,
erlang:element(6, Builder)
),
Res = case glace@internal@glace_middleware:execute_middlewares(
Request,
erlang:element(4, Builder)
) of
{ok, Req@1} ->
case glace@internal@glace_router:match_route(
Req@1,
erlang:element(3, Builder)
) of
{ok, Response} ->
case glace@internal@glace_middleware:execute_middlewares(
Req@1,
erlang:element(5, Builder)
) of
{ok, _} ->
Response;
{error, Error} ->
Error
end;
{error, nil} ->
glace@internal@glace_response:not_found()
end;
{error, Error@1} ->
Error@1
end,
Res
end,
_pipe@1 = mist:new(_pipe),
_pipe@2 = mist:port(_pipe@1, erlang:element(2, Builder)),
mist:start_http(_pipe@2)
end,
{ok, Process} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
value => _assert_fail,
module => <<"glace/internal/glace_builder"/utf8>>,
function => <<"start_with_context"/utf8>>,
line => 32})
end,
gleam_erlang_ffi:sleep_forever(),
Process.