Ignore:
Timestamp:
Sep 9, 2022, 8:20:25 PM (22 months ago)
Author:
chronos
Message:
  • Modified: Removed TemplateGenerics package. Generics usage replaced by standard Generics.Collections.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Packages/CoolWeb/WebServer/UHTTPServerTCP.pas

    r137 r138  
    44
    55uses
    6   Classes, SysUtils, UHTTPServer, UTCPServer, SpecializedList, SynaUtil;
     6  Classes, SysUtils, UHTTPServer, UTCPServer, SynaUtil, Generics.Collections,
     7  UGenerics;
    78
    89type
     
    4243  I: Integer;
    4344  ContentLength: Integer;
     45  Value: string;
     46  Item: TPair<string, string>;
    4447begin
    4548  with TTCPClientThread(Sender), Socket do begin
     
    6063          WriteLn(IntToStr(Id) + ' ' + Line);
    6164          if (LineIndex = 0) then begin
    62             LineParts.Explode(Line, ' ', StrToStr);
     65            LineParts.Explode(' ', Line);
    6366            if (LineParts.Count >= 3) then begin
    6467              Request.Method := LineParts[0];
    6568              if Pos('?', LineParts[1]) > 0 then begin
    6669                Request.Query.Parse(Copy(LineParts[1], Pos('?', LineParts[1]) + 1, Length(LineParts[1])));
    67                 Request.Path.Explode(Copy(LineParts[1], 1, Pos('?', LineParts[1]) - 1), '/', StrToStr);
     70                Request.Path.Explode('/', Copy(LineParts[1], 1, Pos('?', LineParts[1]) - 1));
    6871              end else begin
    69                 Request.Path.Explode(LineParts[1], '/', StrToStr);
     72                Request.Path.Explode('/', LineParts[1]);
    7073                Request.Query.Clear;
    7174              end;
     
    7578            end;
    7679          end else begin
    77             LineParts.Explode(Line, ' ', StrToStr, 2);
     80            LineParts.Explode(' ', Line, 2);
    7881            if (LineParts.Count = 2) and (LineParts[0][Length(LineParts[0])] = ':') then begin
    7982              LineParts[0] := Copy(LineParts[0], 1, Length(LineParts[0]) - 1);
    8083              Request.Headers.Add(LineParts[0], LineParts[1]);
    81               //WriteLn(Line);
    8284            end;
    8385          end;
     
    8688
    8789        if Request.Method = 'POST' then begin
    88           ContentLength := StrToInt(Request.Headers.Values['Content-Length']);
     90          if Request.Headers.TryGetValue('Content-Length', Value) then
     91            ContentLength := StrToInt(Value);
    8992          SetLength(Line, ContentLength);
    9093          RecvBufferEx(PByte(Line), ContentLength, 1000);
     
    9699
    97100    // Process cookies
    98     if Request.Headers.SearchKey('Cookie') <> -1 then
    99       Request.Cookies.Parse(Request.Headers.Values['Cookie']);
     101    if Request.Headers.TryGetValue('Cookie', Value) then
     102      Request.Cookies.Parse(Value);
    100103
    101104    // Load session variables
     
    120123
    121124      // Handle cookies
    122       for I := 0 to Cookies.Count - 1 do
    123         Headers.Add('Set-Cookie', Cookies.Keys[I] + '=' + Cookies.Items[I].Value);
     125      for Item in Cookies do
     126        Headers.Add('Set-Cookie', Item.Key + '=' + Item.Value);
    124127        // + ';path=/;expires=' + RFC822DateTime(Now);
    125128
    126129      // Send headers
    127       for I := 0 to Headers.Count - 1 do begin
     130      for Item in Headers do begin
    128131        //WriteLn(Headers.Keys[I] + ': ' + Headers.Items[I].Value + #13#10);
    129         SendString(Headers.Keys[I] + ': ' + Headers.Items[I].Value + #13#10);
     132        SendString(Item.Key + ': ' + Item.Value + #13#10);
    130133      end;
    131134      SendString(#13#10);
Note: See TracChangeset for help on using the changeset viewer.