mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-08 03:14:21 +00:00
add RIMutableDirectoryNode.get, to get a specific child file or directory
This commit is contained in:
parent
b0abe5122d
commit
faf0b13e3c
@ -27,14 +27,6 @@ class MutableDirectoryNode(Referenceable):
|
||||
if name == "." or name == ".." or "/" in name:
|
||||
raise DeadDirectoryNodeError("bad filename component")
|
||||
|
||||
# this is private
|
||||
def get_child(self, name):
|
||||
self.validate_name(name)
|
||||
absname = os.path.join(self._basedir, name)
|
||||
if os.path.isdir(absname):
|
||||
return self.make_subnode(absname)
|
||||
raise DeadDirectoryNodeError("no such directory")
|
||||
|
||||
# these are the public methods, available to anyone who holds a reference
|
||||
|
||||
def list(self):
|
||||
@ -55,6 +47,21 @@ class MutableDirectoryNode(Referenceable):
|
||||
return results
|
||||
remote_list = list
|
||||
|
||||
def get(self, name):
|
||||
self.validate_name(name)
|
||||
absname = os.path.join(self._basedir, name)
|
||||
if os.path.isdir(absname):
|
||||
return self.make_subnode(absname)
|
||||
elif os.path.isfile(absname):
|
||||
f = open(absname, "rb")
|
||||
data = f.read()
|
||||
f.close()
|
||||
return data
|
||||
else:
|
||||
raise BadFileError("there is nothing named '%s' in this directory"
|
||||
% name)
|
||||
remote_get = get
|
||||
|
||||
def add_directory(self, name):
|
||||
self.validate_name(name)
|
||||
absname = os.path.join(self._basedir, name)
|
||||
|
@ -55,6 +55,9 @@ class RIMutableDirectoryNode(RemoteInterface):
|
||||
maxLength=100,
|
||||
)
|
||||
|
||||
def get(name=str):
|
||||
return (RIMutableDirectoryNode_, Verifierid)
|
||||
|
||||
def add_directory(name=str):
|
||||
return RIMutableDirectoryNode_
|
||||
|
||||
|
@ -19,9 +19,15 @@ class FileTable(unittest.TestCase):
|
||||
self.failUnlessRaises(BadFileError, root.remove, "two")
|
||||
self.failUnlessRaises(BadFileError, root.remove, "three")
|
||||
|
||||
self.failUnlessEqual(root.get("one"), "vid-one")
|
||||
self.failUnlessRaises(BadFileError, root.get, "missing")
|
||||
|
||||
# now play with directories
|
||||
subdir1 = root.add_directory("subdir1")
|
||||
self.failUnless(isinstance(subdir1, MutableDirectoryNode))
|
||||
subdir1a = root.get("subdir1")
|
||||
self.failUnless(isinstance(subdir1a, MutableDirectoryNode))
|
||||
self.failUnlessEqual(subdir1a._basedir, subdir1._basedir)
|
||||
entries = root.list()
|
||||
self.failUnlessEqual(len(entries), 2)
|
||||
one_index = entries.index( ("one", "vid-one") )
|
||||
|
Loading…
x
Reference in New Issue
Block a user