diff --git a/src/Servers/GenHttpServer11/GenHttpServer.csproj b/src/Servers/GenHttpServer11/GenHttpServer.csproj index 634b3a0..3b7c84d 100644 --- a/src/Servers/GenHttpServer11/GenHttpServer.csproj +++ b/src/Servers/GenHttpServer11/GenHttpServer.csproj @@ -7,9 +7,9 @@ - - - + + + diff --git a/src/Servers/GenHttpServer11/Program.cs b/src/Servers/GenHttpServer11/Program.cs index ec9be43..9c964c5 100644 --- a/src/Servers/GenHttpServer11/Program.cs +++ b/src/Servers/GenHttpServer11/Program.cs @@ -9,7 +9,7 @@ var port = (args.Length > 0 && ushort.TryParse(args[0], out var p)) ? p : (ushort)8080; -var rootMethods = new HashSet { RequestMethod.Get, RequestMethod.Head, RequestMethod.Options }; +var rootMethods = new HashSet { RequestMethod.Get, RequestMethod.Head, RequestMethod.Options }; var app = Inline.Create() .Get("/cookie", (IRequest request) => ParseCookies(request)) @@ -35,10 +35,7 @@ static string Echo(IRequest request) { var header = source[i]; - var key = Encoding.ASCII.GetString(header.Key.Span); - var value = Encoding.ASCII.GetString(header.Value.Span); - - headers.AppendLine($"{key}: {value}"); + headers.AppendLine($"{header.Key}: {header.Value}"); } return headers.ToString(); @@ -48,34 +45,13 @@ static string ParseCookies(IRequest request) { var sb = new StringBuilder(); - var cookieHeader = request.Header.Headers.GetEntry("Cookie"); - - if (cookieHeader == null) - { - return string.Empty; - } - - var remaining = cookieHeader.AsSpan(); + var cookies = request.Header.Headers.GetCookies(); - while (!remaining.IsEmpty) + for (var i = 0; i < cookies.Count; i++) { - var delimiterIndex = remaining.IndexOf("; "); - - var segment = delimiterIndex >= 0 - ? remaining[..delimiterIndex] - : remaining; - - var equalsIndex = segment.IndexOf('='); - - if (equalsIndex > 0) - { - var key = segment[..equalsIndex].Trim(); - var value = segment[(equalsIndex + 1)..].Trim(); - - sb.AppendLine($"{key}: {value}"); - } + var cookie = cookies[i]; - remaining = delimiterIndex >= 0 ? remaining[(delimiterIndex + 2)..] : ReadOnlySpan.Empty; + sb.AppendLine($"{cookie.Key}: {cookie.Value}"); } return sb.ToString();