restemplate/indy/Protocols/IdAuthenticationManager.pas

176 lines
4.2 KiB
Plaintext

{
$Project$
$Workfile$
$Revision$
$DateUTC$
$Id$
This file is part of the Indy (Internet Direct) project, and is offered
under the dual-licensing agreement described on the Indy website.
(http://www.indyproject.org/)
Copyright:
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
$Log$
}
{
Rev 1.4 10/26/2004 10:59:30 PM JPMugaas
Updated ref.
Rev 1.3 5/29/2004 10:02:20 AM DSiders
Corrected case in Create parameter.
Rev 1.2 2004.02.03 5:44:54 PM czhower
Name changes
Rev 1.1 2004.01.21 1:04:52 PM czhower
InitComponenet
Rev 1.0 11/14/2002 02:13:40 PM JPMugaas
}
unit IdAuthenticationManager;
interface
{$i IdCompilerDefines.inc}
uses
Classes,
IdAuthentication,
IdBaseComponent,
IdURI;
type
TIdAuthenticationItem = class(TCollectionItem)
protected
FURI: TIdURI;
FParams: TStrings;
procedure SetParams(const Value: TStrings);
procedure SetURI(const Value: TIdURI);
public
constructor Create(ACollection: TCollection); override;
destructor Destroy; override;
procedure Assign(Source: TPersistent); override;
property URL: TIdURI read FURI write SetURI;
property Params: TStrings read FParams write SetParams;
end;
TIdAuthenticationCollection = class(TOwnedCollection)
protected
function GetAuthItem(AIndex: Integer): TIdAuthenticationItem;
procedure SetAuthItem(AIndex: Integer; const Value: TIdAuthenticationItem);
public
function Add: TIdAuthenticationItem;
constructor Create(AOwner: TPersistent);
//
property Items[AIndex: Integer]: TIdAuthenticationItem read GetAuthItem write SetAuthItem;
end;
TIdAuthenticationManager = class(TIdBaseComponent)
protected
FAuthentications: TIdAuthenticationCollection;
//
procedure InitComponent; override;
public
destructor Destroy; override;
procedure AddAuthentication(AAuthentication: TIdAuthentication; AURL: TIdURI);
property Authentications: TIdAuthenticationCollection read FAuthentications;
end;
implementation
uses
IdGlobal, SysUtils;
{ TIdAuthenticationManager }
function TIdAuthenticationCollection.Add: TIdAuthenticationItem;
begin
Result := TIdAuthenticationItem(inherited Add);
end;
constructor TIdAuthenticationCollection.Create(AOwner: TPersistent);
begin
inherited Create(AOwner, TIdAuthenticationItem);
end;
function TIdAuthenticationCollection.GetAuthItem(AIndex: Integer): TIdAuthenticationItem;
begin
Result := TIdAuthenticationItem(inherited GetItem(AIndex));
end;
procedure TIdAuthenticationCollection.SetAuthItem(AIndex: Integer;
const Value: TIdAuthenticationItem);
begin
inherited SetItem(AIndex, Value);
end;
{ TIdAuthenticationManager }
procedure TIdAuthenticationManager.AddAuthentication(
AAuthentication: TIdAuthentication; AURL: TIdURI);
var
LItem: TIdAuthenticationItem;
begin
LItem := Authentications.Add;
LItem.URL.URI := AURL.URI;
LItem.Params.Assign(AAuthentication.Params);
end;
destructor TIdAuthenticationManager.Destroy;
begin
FreeAndNil(FAuthentications);
inherited Destroy;
end;
procedure TIdAuthenticationManager.InitComponent;
begin
inherited InitComponent;
FAuthentications := TIdAuthenticationCollection.Create(Self);
end;
{ TIdAuthenticationItem }
constructor TIdAuthenticationItem.Create(ACollection: TCollection);
begin
inherited Create(ACollection);
FURI := TIdURI.Create;
FParams := TStringList.Create;
end;
destructor TIdAuthenticationItem.Destroy;
begin
FreeAndNil(FURI);
FreeAndNil(FParams);
inherited Destroy;
end;
procedure TIdAuthenticationItem.Assign(Source: TPersistent);
var
LSource: TIdAuthenticationItem;
begin
if Source is TIdAuthenticationItem then begin
LSource := TIdAuthenticationItem(Source);
URL.URI := LSource.URL.URI;
Params.Assign(LSource.Params);
end else begin
inherited Assign(Source);
end;
end;
procedure TIdAuthenticationItem.SetParams(const Value: TStrings);
begin
FParams.Assign(Value);
end;
procedure TIdAuthenticationItem.SetURI(const Value: TIdURI);
begin
FURI.URI := Value.URI;
end;
end.