-module(docs). -compile([no_auto_import, nowarn_unused_vars]). -export([main/0]). -spec mist_response( gleam@http@response:response(gleam@bit_builder:bit_builder()) ) -> mist@internal@handler:handler_response(). mist_response(Response) -> _pipe = Response, mist:bit_builder_response(_pipe, erlang:element(4, Response)). -spec http_service( gleam@http@request:request(mist@internal@http:body()), fun((gleam@http@request:request(bitstring())) -> gleam@http@response:response(gleam@bit_builder:bit_builder())) ) -> mist@internal@handler:handler_response(). http_service(Req, Router) -> _pipe = Req, _pipe@1 = mist:read_body(_pipe), _pipe@4 = gleam@result:map(_pipe@1, fun(Http_req) -> _pipe@2 = Http_req, _pipe@3 = Router(_pipe@2), mist_response(_pipe@3) end), gleam@result:unwrap( _pipe@4, begin _pipe@5 = gleam@http@response:new(500), mist:empty_response(_pipe@5) end ). -spec load_port() -> integer(). load_port() -> _pipe = gleam_erlang_ffi:get_env(<<"PORT"/utf8>>), _pipe@1 = gleam@result:then(_pipe, fun gleam@int:parse/1), gleam@result:unwrap(_pipe@1, 3000). -spec main() -> nil. main() -> sprocket_ffi:configure_logger_backend(), Port = load_port(), Ca = sprocket@cassette:start(), Router = docs@routes:stack({app_context, Ca}), _assert_subject = mist:serve( Port, mist:handler_func( fun(Req) -> case {erlang:element(2, Req), gleam@http@request:path_segments(Req)} of {get, [<<"live"/utf8>>]} -> sprocket@cassette:live_service(Req, Ca); {_, _} -> http_service(Req, Router) end end ) ), {ok, _} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => assert, message => <<"Assertion pattern match failed"/utf8>>, value => _assert_fail, module => <<"docs"/utf8>>, function => <<"main"/utf8>>, line => 24}) end, _pipe = gleam@string:concat( [<<"Listening on localhost:"/utf8>>, gleam@int:to_string(Port), <<" ✨"/utf8>>] ), docs@utils@logger:info(_pipe), gleam_erlang_ffi:sleep_forever().