|
1 | | -using GenHTTP.Api.Content; |
2 | 1 | using GenHTTP.Api.Protocol; |
| 2 | + |
3 | 3 | using GenHTTP.Engine.Internal; |
| 4 | + |
4 | 5 | using GenHTTP.Modules.Functional; |
5 | | -using GenHTTP.Modules.Layouting; |
6 | 6 | using GenHTTP.Modules.Practices; |
7 | 7 |
|
8 | | -var port = args.Length > 0 && int.TryParse(args[0], out var p) ? p : 8080; |
| 8 | +var port = (args.Length > 0 && ushort.TryParse(args[0], out var p)) ? p : (ushort)8080; |
9 | 9 |
|
10 | | -var echoHandler = Inline.Create() |
11 | | - .Any(async (IRequest request) => |
12 | | - { |
13 | | - await ValueTask.CompletedTask; |
14 | | - var sb = new System.Text.StringBuilder(); |
15 | | - foreach (var h in request.Headers) |
16 | | - sb.AppendLine($"{h.Key}: {h.Value}"); |
17 | | - return sb.ToString(); |
18 | | - }); |
19 | | - |
20 | | -var rootHandler = Inline.Create() |
21 | | - .Get(async (IRequest request) => |
22 | | - { |
23 | | - await ValueTask.CompletedTask; |
24 | | - return "OK"; |
25 | | - }) |
26 | | - .Post(async (IRequest request) => |
| 10 | +var app = Inline.Create() |
| 11 | + .Get("/echo", (IRequest request) => Echo(request)) |
| 12 | + .Post((Stream body) => RequestContent(body)) |
| 13 | + .Any(() => StringContent()); |
| 14 | + |
| 15 | +return await Host.Create() |
| 16 | + .Handler(app) |
| 17 | + .Defaults() |
| 18 | + .Port(port) |
| 19 | + .RunAsync(); |
| 20 | + |
| 21 | +static string Echo(IRequest request) |
| 22 | +{ |
| 23 | + var headers = new System.Text.StringBuilder(); |
| 24 | + |
| 25 | + foreach (var h in request.Headers) |
27 | 26 | { |
28 | | - if (request.Content is not null) |
29 | | - { |
30 | | - using var reader = new StreamReader(request.Content); |
31 | | - return await reader.ReadToEndAsync(); |
32 | | - } |
33 | | - return ""; |
34 | | - }); |
35 | | - |
36 | | -var layout = Layout.Create() |
37 | | - .Add("echo", echoHandler) |
38 | | - .Add(rootHandler); |
39 | | - |
40 | | -await Host.Create() |
41 | | - .Handler(layout) |
42 | | - .Defaults() |
43 | | - .Port((ushort)port) |
44 | | - .RunAsync(); |
| 27 | + headers.AppendLine($"{h.Key}: {h.Value}"); |
| 28 | + } |
| 29 | + |
| 30 | + return headers.ToString(); |
| 31 | +} |
| 32 | + |
| 33 | +static string StringContent() => "OK"; |
| 34 | + |
| 35 | +static Stream RequestContent(Stream body) => body; |
0 commit comments