- Recompilación en Delphi10 de todos los paquetes de RO para generar las DCU's en Lib\D10 - Recompilación en Delphi10 de todos los paquetes de DA para generar las DCU's en Lib\D10 git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@9 b6239004-a887-0f4b-9937-50029ccdca16
158 lines
3.4 KiB
ObjectPascal
158 lines
3.4 KiB
ObjectPascal
unit uIPHttpHeaders;
|
|
|
|
interface
|
|
|
|
{$I RemObjects.inc}
|
|
|
|
uses
|
|
SysUtils, Classes;
|
|
|
|
type
|
|
TDynamicByteArray = array of Byte;
|
|
TIPHttpRequestHeaders = class
|
|
private
|
|
fHeaders: TStrings;
|
|
fMethod: string;
|
|
fPath: string;
|
|
fVersion: string;
|
|
function GetContentType: string;
|
|
function GetContentLength: Int64;
|
|
public
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
|
|
property Headers: TStrings read fHeaders;
|
|
|
|
procedure AddHeaderLine(const aLine: string);
|
|
|
|
property Method: string read fMethod write fMethod;
|
|
property Path: string read fPath write fPath;
|
|
property Version: string read fVersion write fVersion;
|
|
|
|
property ContentLength: Int64 read GetContentLength;
|
|
property ContentType: string read GetContentType;
|
|
|
|
procedure Clear;
|
|
end;
|
|
TIPHttpResponseHeaders = class
|
|
private
|
|
fHeaders: TStrings;
|
|
fCode: Integer;
|
|
fVersion, fReason: string;
|
|
public
|
|
constructor Create;
|
|
destructor Destroy; override;
|
|
|
|
property Headers: TStrings read fHeaders;
|
|
property Version: string read fVersion write fVersion;
|
|
property Code: Integer read fCode write fCode;
|
|
property Reason: string read fReason write fReason;
|
|
|
|
procedure Assign(aOrg: TIPHttpResponseHeaders);
|
|
procedure Clear;
|
|
function ToString: string;
|
|
end;
|
|
|
|
implementation
|
|
{ TIPHttpRequestHeaders }
|
|
|
|
procedure TIPHttpRequestHeaders.AddHeaderLine(const aLine: string);
|
|
var
|
|
lPos: Integer;
|
|
lName, lVal: string;
|
|
begin
|
|
lPos := Pos(':', aline);
|
|
if lPos = 0 then exit;
|
|
lName := Trim(copy(aLine, 1, lPos -1));
|
|
lVal := Trim(copy(aLine, lPos+1, MaxInt));
|
|
fHeaders.ADd(lName+'='+lVal);
|
|
end;
|
|
|
|
procedure TIPHttpRequestHeaders.Clear;
|
|
begin
|
|
fHeaders.Clear;
|
|
fMethod := '';
|
|
fPath := '';
|
|
fVersion := '';
|
|
end;
|
|
|
|
constructor TIPHttpRequestHeaders.Create;
|
|
begin
|
|
fHeaders := TStringList.Create;
|
|
end;
|
|
|
|
destructor TIPHttpRequestHeaders.Destroy;
|
|
begin
|
|
fHeaders.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
function TIPHttpRequestHeaders.GetContentLength: Int64;
|
|
var
|
|
s: string;
|
|
begin
|
|
s := fHeaders.Values['Content-Length'];
|
|
Result := StrToInt64Def(s, 0);
|
|
end;
|
|
|
|
function TIPHttpRequestHeaders.GetContentType: string;
|
|
begin
|
|
result := fHeaders.Values['Content-Type'];
|
|
end;
|
|
|
|
{ TIPHttpResponseHeaders }
|
|
|
|
procedure TIPHttpResponseHeaders.Assign(aOrg: TIPHttpResponseHeaders);
|
|
begin
|
|
fHeaders.Assign(aOrg.Headers);
|
|
fCode := aOrg.Code;
|
|
fVersion := aOrg.Version;
|
|
fReason := aOrg.Reason;
|
|
end;
|
|
|
|
procedure TIPHttpResponseHeaders.Clear;
|
|
begin
|
|
fCode := 200;
|
|
fVersion := 'HTTP/1.1';
|
|
fReason := 'OK';
|
|
fHeaders.Clear;
|
|
end;
|
|
|
|
constructor TIPHttpResponseHeaders.Create;
|
|
begin
|
|
inherited Create;
|
|
fHeaders := TStringList.Create;
|
|
fVersion := 'HTTP/1.1';
|
|
Clear;
|
|
end;
|
|
|
|
destructor TIPHttpResponseHeaders.Destroy;
|
|
begin
|
|
fHeaders.Free;
|
|
inherited Destroy;
|
|
end;
|
|
|
|
|
|
|
|
function TIPHttpResponseHeaders.ToString: string;
|
|
var
|
|
lHeaders, lName, lVal: string;
|
|
lPos, i: Integer;
|
|
begin
|
|
lHeaders := fVersion +' '+ IntToStr(fCode)+' '+fReason + #13#10;
|
|
for i := 0 to fHeaders.Count -1 do begin
|
|
lVal := fHeaders[i];
|
|
lPos := Pos('=', lVal);
|
|
if lPos > 0 then begin
|
|
lName := Trim(Copy(lVal, 1, lPos -1));
|
|
lVal := Trim(Copy(lVal, lPos + 1, MaxInt));
|
|
lHeaders := lHeaders + lName+': '+lVal + #13#10;
|
|
end;
|
|
end;
|
|
lHeaders := lHeaders + #13#10;
|
|
Result := lHeaders;
|
|
end;
|
|
|
|
|
|
end.
|