153 lines
6.4 KiB
Plaintext
153 lines
6.4 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.8 8/24/2003 06:49:54 PM JPMugaas
|
||
|
API Change in the FileSystem component so that a thread is passed instead of
|
||
|
some data from the thread. This should also make the API's easier to manage
|
||
|
than before and provide more flexibility for developers writing their own
|
||
|
file system components.
|
||
|
|
||
|
Rev 1.7 3/10/2003 05:09:10 PM JPMugaas
|
||
|
MLST now works as expected with the file system. Note that the MLST means
|
||
|
simply to give information about an item instead of its contents.
|
||
|
GetRealFileName in IdFTPFileSystem now can accept the wildcard *.
|
||
|
When doing dirs in EPLF, only information about a directory is retruned if it
|
||
|
is specified.
|
||
|
|
||
|
Rev 1.6 3/6/2003 10:59:58 AM JPMugaas
|
||
|
Now handles the MFMT command and the MFCT (Modified Date fact) command.
|
||
|
|
||
|
Rev 1.5 3/6/2003 08:26:20 AM JPMugaas
|
||
|
Bug fixes.
|
||
|
|
||
|
FTP COMB command can now work in the FTPFileSystem component.
|
||
|
|
||
|
Rev 1.4 3/5/2003 03:28:06 PM JPMugaas
|
||
|
MD5, MMD5, and XCRC are now supported in the Virtual File System.
|
||
|
|
||
|
Rev 1.3 3/2/2003 04:54:26 PM JPMugaas
|
||
|
Now does recursive dir lists with the Virtual File System layer as well as
|
||
|
honors other switches.
|
||
|
|
||
|
Rev 1.2 3/2/2003 02:20:24 PM JPMugaas
|
||
|
Updated FTP File system. It now raises exceptions for errors plus load and
|
||
|
save have been implemented. I also implemented RMDIR.
|
||
|
|
||
|
Rev 1.1 3/2/2003 02:20:12 AM JPMugaas
|
||
|
Updated with some enw functionality.
|
||
|
|
||
|
Rev 1.0 11/13/2002 08:28:28 AM JPMugaas
|
||
|
Initial import from FTP VC.
|
||
|
}
|
||
|
|
||
|
{*===========================================================================*}
|
||
|
{* DESCRIPTION *}
|
||
|
{*****************************************************************************}
|
||
|
{* PROJECT : Indy 10 *}
|
||
|
{* AUTHOR : Bas Gooijen *}
|
||
|
{* MAINTAINER : Bas Gooijen *}
|
||
|
{*...........................................................................*}
|
||
|
{* DESCRIPTION *}
|
||
|
{* *}
|
||
|
{* Abstract base class for TIdFTPFileSystem *}
|
||
|
{* *}
|
||
|
{*...........................................................................*}
|
||
|
{* HISTORY *}
|
||
|
{* DATE VERSION AUTHOR REASONS *}
|
||
|
{* *}
|
||
|
{* 01/10/2002 1.0 Bas Gooijen Initial start *}
|
||
|
{*****************************************************************************}
|
||
|
|
||
|
unit IdFTPBaseFileSystem;
|
||
|
|
||
|
interface
|
||
|
{$i IdCompilerDefines.inc}
|
||
|
|
||
|
uses
|
||
|
Classes,
|
||
|
IdBaseComponent,
|
||
|
IdException,
|
||
|
IdFTPList,
|
||
|
IdFTPListOutput,
|
||
|
IdFTPServerContextBase;
|
||
|
|
||
|
type
|
||
|
TIdFTPBaseFileSystem = class(TIdBaseComponent)
|
||
|
protected
|
||
|
procedure ErrPermissionDenied;
|
||
|
procedure ErrCantRemoveDir;
|
||
|
procedure ErrFileNotFound;
|
||
|
procedure ErrNotAFile;
|
||
|
procedure ErrNotADir;
|
||
|
public
|
||
|
procedure ChangeDir(AContext : TIdFTPServerContextBase; var VDirectory: TIdFTPFileName); virtual; abstract;
|
||
|
procedure GetFileSize(AContext : TIdFTPServerContextBase; const AFilename: TIdFTPFileName; var VFileSize: Int64); virtual; abstract;
|
||
|
procedure GetFileDate(AContext : TIdFTPServerContextBase; const AFilename: TIdFTPFileName; var VFileDate: TDateTime); virtual; abstract;
|
||
|
procedure ListDirectory(AContext : TIdFTPServerContextBase; const APath: TIdFTPFileName; ADirectoryListing: TIdFTPListOutput; const ACmd, ASwitches : String); virtual; abstract;
|
||
|
procedure RenameFile(AContext : TIdFTPServerContextBase; const ARenameToFile: TIdFTPFileName); virtual; abstract;
|
||
|
procedure DeleteFile(AContext : TIdFTPServerContextBase; const APathName: TIdFTPFileName); virtual; abstract;
|
||
|
procedure RetrieveFile(AContext : TIdFTPServerContextBase; const AFileName: TIdFTPFileName; var VStream: TStream); virtual; abstract;
|
||
|
procedure StoreFile(AContext : TIdFTPServerContextBase; const AFileName: TIdFTPFileName; AAppend: Boolean; var VStream: TStream); virtual; abstract;
|
||
|
procedure MakeDirectory(AContext : TIdFTPServerContextBase; var VDirectory: TIdFTPFileName); virtual; abstract;
|
||
|
procedure RemoveDirectory(AContext : TIdFTPServerContextBase; var VDirectory: TIdFTPFileName); virtual; abstract;
|
||
|
procedure SetModifiedFileDate(AContext : TIdFTPServerContextBase; const AFileName: TIdFTPFileName; var VDateTime: TDateTime); virtual; abstract;
|
||
|
procedure GetCRCCalcStream(AContext : TIdFTPServerContextBase; const AFileName: TIdFTPFileName; var VStream : TStream); virtual; abstract;
|
||
|
procedure CombineFiles(AContext : TIdFTPServerContextBase;
|
||
|
const ATargetFileName: TIdFTPFileName; AParts: TStrings); virtual; abstract;
|
||
|
|
||
|
end;
|
||
|
EIdFileSystemException = class(EIdException);
|
||
|
EIdFileSystemPermissionDenied = class(EIdFileSystemException);
|
||
|
EIdFileSystemFileNotFound = class(EIdFileSystemException);
|
||
|
EIdFileSystemNotAFile = class(EIdFileSystemException);
|
||
|
EIdFileSystemNotADir = class(EIdFileSystemException);
|
||
|
EIdFileSystemCannotRemoveDir = class(EIdFileSystemException);
|
||
|
|
||
|
implementation
|
||
|
uses IdResourceStringsProtocols;
|
||
|
{ TIdFTPBaseFileSystem }
|
||
|
|
||
|
procedure TIdFTPBaseFileSystem.ErrCantRemoveDir;
|
||
|
begin
|
||
|
raise EIdFileSystemCannotRemoveDir.Create(RSFTPFSysErrMsg);
|
||
|
end;
|
||
|
|
||
|
procedure TIdFTPBaseFileSystem.ErrFileNotFound;
|
||
|
begin
|
||
|
raise EIdFileSystemFileNotFound.Create(RSFTPFSysErrMsg);
|
||
|
end;
|
||
|
|
||
|
procedure TIdFTPBaseFileSystem.ErrNotADir;
|
||
|
begin
|
||
|
raise EIdFileSystemNotADir.Create(RSFTPFSysErrMsg);
|
||
|
end;
|
||
|
|
||
|
procedure TIdFTPBaseFileSystem.ErrNotAFile;
|
||
|
begin
|
||
|
raise EIdFileSystemNotAFile.Create(RSFTPFSysErrMsg);
|
||
|
end;
|
||
|
|
||
|
procedure TIdFTPBaseFileSystem.ErrPermissionDenied;
|
||
|
begin
|
||
|
raise EIdFileSystemPermissionDenied.Create(RSFTPFSysErrMsg);
|
||
|
end;
|
||
|
|
||
|
end.
|
||
|
|
||
|
|