| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- {
- $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.
|