Ignore:
Timestamp:
Jun 18, 2012, 10:42:17 PM (12 years ago)
Author:
chronos
Message:
  • Modified: QueryParts renamed to Path as TListString type.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Network/CoolWeb/WebServer/UHTTPServer.pas

    r311 r376  
    77uses
    88  Classes, SysUtils, UTCPServer, UCommon, UMemoryStreamEx, UMIMEType,
    9   Synautil, SpecializedList;
     9  Synautil, SpecializedList, SpecializedDictionary;
    1010
    1111type
     
    3131    Content: TMemoryStreamEx;
    3232    Query: TQueryParameterList;
    33     QueryParts: TListString;
    34     Path: string;
     33    Path: TListString;
    3534    Method: string;
    36     Headers: TStringList;
     35    Headers: TDictionaryStringString;
    3736    Cookies: TCookieList;
    3837    Post: TQueryParameterList;
     38    procedure Assign(Source: THTTPRequest);
    3939    procedure Clear;
    4040    constructor Create;
     
    4747    ContentType: string;
    4848    Content: TMemoryStreamEx;
    49     Headers: TStringList;
     49    Headers: TDictionaryStringString;
    5050    Cookies: TCookieList;
     51    procedure Assign(Source: THTTPResponse);
    5152    procedure Clear;
    5253    constructor Create;
     
    6263    SessionId: string;
    6364    Session: TStringList;
    64     constructor Create;
     65    procedure Assign(Source: THTTPHandlerData);
     66    constructor Create; virtual;
    6567    destructor Destroy; override;
    6668  end;
     
    145147    WriteString('<h5>Request HTTP headers</h5>');
    146148    for I := 0 to Request.Headers.Count - 1 do begin;
    147       WriteString(Request.Headers.Strings[I] + '<br/>');
     149      WriteString(Request.Headers.Items[I].Value + '<br/>');
    148150    end;
    149151
     
    171173    with Response.Content do
    172174    for I := 0 to Response.Headers.Count - 1 do begin;
    173       WriteString(Response.Headers.Strings[I] + '<br/>');
     175      WriteString(Response.Headers.Items[I].Value + '<br/>');
    174176    end;
    175177
     
    184186begin
    185187  with HandlerData, Response.Content do begin
    186     WriteString('<html><body>' + Format(SPageNotFound, [Request.Path]) + '</body></html>');
     188    WriteString('<html><body>' + Format(SPageNotFound, [Request.Path.Implode('/', StrToStr)]) + '</body></html>');
    187189  end;
    188190end;
     
    206208begin
    207209  with HandlerData do begin
    208     FileName := DocumentRoot + Request.Path;
     210    FileName := DocumentRoot + DirectorySeparator + Request.Path.Implode('/', StrToStr);
    209211    if FileExists(FileName) then begin
    210212      Response.Headers.Values['Content-Type'] := GetMIMEType(Copy(ExtractFileExt(FileName), 2, 255));
    211       BinaryFile := TFileStream.Create(FileName, fmOpenRead);
    212       Response.Content.WriteStream(BinaryFile, BinaryFile.Size);
    213       BinaryFile.Destroy;
     213      try
     214        BinaryFile := TFileStream.Create(FileName, fmOpenRead);
     215        Response.Content.WriteStream(BinaryFile, BinaryFile.Size);
     216      finally
     217        BinaryFile.Free;
     218      end;
    214219    end else
    215220    with Response.Content do begin
    216       WriteLn(Format(SFileNotFound, [Request.Path]));
    217       WriteString('<html><body>' + Format(SFileNotFound, [Request.Path]) + '</body></html>');
     221      WriteLn(Format(SFileNotFound, [Request.Path.Implode('/', StrToStr)]));
     222      WriteString('<html><body>' + Format(SFileNotFound, [Request.Path.Implode('/', StrToStr)]) + '</body></html>');
    218223    end;
    219224  end;
     
    234239{ THTTPResponse }
    235240
     241procedure THTTPResponse.Assign(Source: THTTPResponse);
     242begin
     243  Content.Assign(Source.Content);
     244  ContentType := Source.ContentType;
     245  Cookies.Assign(Source.Cookies);
     246  Headers.Assign(Source.Headers);
     247end;
     248
    236249procedure THTTPResponse.Clear;
    237250begin
     
    245258  Content := TMemoryStreamEx.Create;
    246259  Cookies := TCookieList.Create;
    247   Headers := TStringList.Create;
     260  Headers := TDictionaryStringString.Create;
    248261end;
    249262
     
    277290{ THTTPRequest }
    278291
     292procedure THTTPRequest.Assign(Source: THTTPRequest);
     293begin
     294  Content.Assign(Source.Content);
     295  ContentType := Source.ContentType;
     296  Cookies.Assign(Source.Cookies);
     297  Headers.Assign(Source.Headers);
     298  Post.Assign(Source.Post);
     299  Method := Source.Method;
     300  Query.Assign(Source.Query);
     301  Path.Assign(Source.Path);
     302end;
     303
    279304procedure THTTPRequest.Clear;
    280305begin
    281306  Post.Clear;
    282307  Content.Clear;
    283   QueryParts.Clear;
     308  Path.Clear;
    284309  Cookies.Clear;
    285310  Headers.Clear;
     
    291316  Post := TQueryParameterList.Create;
    292317  Query := TQueryParameterList.Create;
    293   QueryParts := TListString.Create;
    294   Headers := TStringList.Create;
     318  Path := TListString.Create;
     319  Headers := TDictionaryStringString.Create;
    295320  Cookies := TCookieList.Create;
    296321  Content := TMemoryStreamEx.Create;
     
    302327  Post.Free;
    303328  Query.Free;
    304   QueryParts.Free;
     329  Path.Free;
    305330  Headers.Free;
    306331  Cookies.Free;
     
    400425
    401426{ THTTPHandlerData }
     427
     428procedure THTTPHandlerData.Assign(Source: THTTPHandlerData);
     429begin
     430  Request.Assign(Source.Request);
     431  Response.Assign(Source.Response);
     432  Session.Assign(Source.Session);
     433  Server := Source.Server;
     434  SessionId := Source.SessionId;
     435end;
    402436
    403437constructor THTTPHandlerData.Create;
Note: See TracChangeset for help on using the changeset viewer.