-module(ewe). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/ewe.gleam"). -export([new/1, port/2, start/1]). -export_type([builder/0]). -type builder() :: {builder, fun((gleam@http@request:request(bitstring())) -> gleam@http@response:response(gleam@bytes_tree:bytes_tree())), integer()}. -file("src/ewe.gleam", 18). -spec new( fun((gleam@http@request:request(bitstring())) -> gleam@http@response:response(gleam@bytes_tree:bytes_tree())) ) -> builder(). new(Handler) -> {builder, Handler, 8080}. -file("src/ewe.gleam", 22). -spec port(builder(), integer()) -> builder(). port(Builder, Port) -> {builder, erlang:element(2, Builder), Port}. -file("src/ewe.gleam", 26). -spec start(builder()) -> {ok, gleam@otp@actor:started(gleam@otp@static_supervisor:supervisor())} | {error, gleam@otp@actor:start_error()}. start(Builder) -> _pipe@2 = glisten:new( fun(_) -> {internal@parser:new_parser(), none} end, fun(Parser, Msg, Conn) -> Msg@2 = case Msg of {packet, Msg@1} -> Msg@1; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, file => <>, module => <<"ewe"/utf8>>, function => <<"start"/utf8>>, line => 30, value => _assert_fail, start => 772, 'end' => 808, pattern_start => 783, pattern_end => 802}) end, Parser@1 = {parser, erlang:element(2, Parser), erlang:element(3, Parser), erlang:element(4, Parser), erlang:element(5, Parser), erlang:element(6, Parser), <<(erlang:element(7, Parser))/bitstring, Msg@2/bitstring>>}, case internal@parser:parse_request(Parser@1) of {ok, Request} -> Send = begin _pipe = (erlang:element(2, Builder))(Request), _pipe@1 = internal@response:encode(_pipe), glisten:send(Conn, _pipe@1) end, case Send of {ok, nil} -> glisten:continue(internal@parser:new_parser()); {error, _} -> glisten:stop() end; {error, {incomplete, Parser@2}} -> glisten:continue(Parser@2); {error, _} -> glisten:stop() end end ), _pipe@3 = glisten:bind(_pipe@2, <<"0.0.0.0"/utf8>>), glisten:start(_pipe@3, erlang:element(3, Builder)).