diff --git a/src/Servers/GenHttpServer/Program.cs b/src/Servers/GenHttpServer/Program.cs index 546da2d..d4356d9 100644 --- a/src/Servers/GenHttpServer/Program.cs +++ b/src/Servers/GenHttpServer/Program.cs @@ -1,44 +1,35 @@ -using GenHTTP.Api.Content; using GenHTTP.Api.Protocol; + using GenHTTP.Engine.Internal; + using GenHTTP.Modules.Functional; -using GenHTTP.Modules.Layouting; using GenHTTP.Modules.Practices; -var port = args.Length > 0 && int.TryParse(args[0], out var p) ? p : 8080; +var port = (args.Length > 0 && ushort.TryParse(args[0], out var p)) ? p : (ushort)8080; -var echoHandler = Inline.Create() - .Any(async (IRequest request) => - { - await ValueTask.CompletedTask; - var sb = new System.Text.StringBuilder(); - foreach (var h in request.Headers) - sb.AppendLine($"{h.Key}: {h.Value}"); - return sb.ToString(); - }); - -var rootHandler = Inline.Create() - .Get(async (IRequest request) => - { - await ValueTask.CompletedTask; - return "OK"; - }) - .Post(async (IRequest request) => +var app = Inline.Create() + .Get("/echo", (IRequest request) => Echo(request)) + .Post((Stream body) => RequestContent(body)) + .Any(() => StringContent()); + +return await Host.Create() + .Handler(app) + .Defaults() + .Port(port) + .RunAsync(); + +static string Echo(IRequest request) +{ + var headers = new System.Text.StringBuilder(); + + foreach (var h in request.Headers) { - if (request.Content is not null) - { - using var reader = new StreamReader(request.Content); - return await reader.ReadToEndAsync(); - } - return ""; - }); - -var layout = Layout.Create() - .Add("echo", echoHandler) - .Add(rootHandler); - -await Host.Create() - .Handler(layout) - .Defaults() - .Port((ushort)port) - .RunAsync(); + headers.AppendLine($"{h.Key}: {h.Value}"); + } + + return headers.ToString(); +} + +static string StringContent() => "OK"; + +static Stream RequestContent(Stream body) => body;