[Zope3-checkins] CVS: Zope3/src/zope/server/interfaces - ftp.py:1.3 vfs.py:NONE
Jim Fulton
jim@zope.com
Mon, 3 Feb 2003 10:09:38 -0500
Update of /cvs-repository/Zope3/src/zope/server/interfaces
In directory cvs.zope.org:/tmp/cvs-serv15846/src/zope/server/interfaces
Modified Files:
ftp.py
Removed Files:
vfs.py
Log Message:
Refactored the ftp framework to make it much simpler, less general,
and easier to maintain. This included ripping out the vfs framework.
=== Zope3/src/zope/server/interfaces/ftp.py 1.2 => 1.3 ===
--- Zope3/src/zope/server/interfaces/ftp.py:1.2 Wed Dec 25 09:15:26 2002
+++ Zope3/src/zope/server/interfaces/ftp.py Mon Feb 3 10:09:04 2003
@@ -1,4 +1,21 @@
-
+##############################################################################
+# Copyright (c) 2002 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+##############################################################################
+"""XXX short summary goes here.
+
+XXX longer description goes here.
+
+$Id$
+"""
+__metaclass__ = type
from zope.interface import Interface
@@ -172,3 +189,204 @@
'xpwd': 'print the current working directory (deprecated)',
'xrmd': 'remove a directory (deprecated)', #!
}
+
+
+class IFileSystemAccess(Interface):
+ """Provides authenticated access to a filesystem.
+ """
+
+ def authenticate(credentials):
+ """Verifies filesystem access based on the presented credentials.
+
+ Should raise Unauthorized if the user can not be authenticated.
+
+ This method only checks general access and is not used for each
+ call to open(). Rather, open() should do its own verification.
+
+ Credentials are passed as username/password tuples.
+
+ """
+
+ def open(credentials):
+ """Returns an IFileSystem.
+
+ Should raise Unauthorized if the user can not be authenticated.
+
+ Credentials are passed as username/password tuples.
+
+ """
+
+
+class IFileSystem(Interface):
+ """We want to provide a complete wrapper around any and all read
+ filesystem operations.
+
+ Opening files for reading, and listing directories, should
+ return a producer.
+
+ All paths are POSIX paths, even when run on Windows,
+ which mainly means that FS implementations always expect forward
+ slashes, and filenames are case-sensitive.
+
+ Note: A file system should *not* store any state!
+ """
+
+ def type(path):
+ """Return the file type at path
+
+ The return valie is 'd', for a directory, 'f', for a file, and
+ None if there is no file at the path.
+
+ This method doesn't raise exceptions.
+ """
+
+ def names(path, filter=None):
+ """Return a sequence of the names in a directory
+
+ If the filter is not None, include only those names for which
+ the filter returns a true value.
+ """
+
+ def ls(path, filter=None):
+ """Return a sequence of information objects
+
+ Returm item info objects (see ls_info) for the files in a directory.
+
+ If the filter is not None, include only those names for which
+ the filter returns a true value.
+ """
+ return list(tuple(str, str))
+
+ def readfile(path, outstream, start=0, end=None):
+ """Outputs the file at path to a stream.
+
+ Data are copied starting from start. If end is not None,
+ data are copied up to end.
+
+ """
+
+ def lsinfo(path):
+ """Return information for a unix-style ls listing for the path
+
+ Data are returned as a dictionary containing the following keys:
+
+ type
+
+ The path type, either 'd' or 'f'.
+
+ owner_name
+
+ Defaults to "na". Must not include spaces.
+
+ owner_readable
+
+ defaults to True
+
+ owner_writable
+
+ defaults to True
+
+ owner_executable
+
+ defaults to True for directories and false otherwise.
+
+ group_name
+
+ Defaults to "na". Must not include spaces.
+
+ group_readable
+
+ defaults to True
+
+ group_writable
+
+ defaults to True
+
+ group_executable
+
+ defaults to True for directories and false otherwise.
+
+ other_readable
+
+ defaults to False
+
+ other_writable
+
+ defaults to False
+
+ other_executable
+
+ defaults to True for directories and false otherwise.
+
+ mtime
+
+ Optional time, as a datetime.
+
+ nlinks
+
+ The number of links. Defaults to 1.
+
+ size
+
+ The file size. Defaults to 0.
+
+ name
+
+ The file name.
+ """
+
+ def mtime(path):
+ """Return the modification time for the file
+
+ Return None if it is unknown.
+ """
+
+ def size(path):
+ """Return the size of the file at path
+ """
+
+ def mkdir(path):
+ """Create a directory.
+ """
+
+ def remove(path):
+ """Remove a file. Same as unlink.
+ """
+
+ def rmdir(path):
+ """Remove a directory.
+ """
+
+ def rename(old, new):
+ """Rename a file or directory.
+ """
+
+ def writefile(path, instream, start=None, end=None, append=False):
+ """Write data to a file.
+
+ If start or end is not None, then only part of the file is
+ written. The remainder of the file is unchanged.
+ If start or end are specified, they must ne non-negative.
+
+ If end is None, then the file is truncated after the data are
+ written. If end is not None, parts of the file after end, if
+ any, are unchanged. If end is not None and there isn't enough
+ data in instream to fill out the file, then the missing data
+ are undefined.
+
+ If neither start nor end are specified, then the file contents
+ are overwritten.
+
+ If start is specified and the file doesn't exist or is shorter
+ than start, the file will contain undefined data before start.
+
+ If append is true, start and end are ignored.
+ """
+
+ def writable(path):
+ """Return boolean indicating whether a file at path is writable
+
+ Note that a true value should be returned if the file doesn't
+ exist but it's directory is writable.
+
+ """
=== Removed File Zope3/src/zope/server/interfaces/vfs.py ===