Componentes.Terceros.RemObj.../internal/5.0.23.613/1/RemObjects SDK for Delphi/Source/uIPHttpHeaders.pas
david 2824855ea7 - Modificación del paquete RemObjects_Core_D10 para que sea un paquete de runtime/designtime (antes era designtime sólo)
- 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
2007-09-10 14:06:19 +00:00

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.