summaryrefslogtreecommitdiff
path: root/fs/opener.py
diff options
context:
space:
mode:
authorwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2010-12-06 23:17:40 +0000
committerwillmcgugan <willmcgugan@67cdc799-7952-0410-af00-57a81ceafa0f>2010-12-06 23:17:40 +0000
commitf5c7b0f0de22ef14fdc40a9e4d73d96fb1fe8ef6 (patch)
treeb08422d1e738b53415e6e4327d7ba7c64e649c6d /fs/opener.py
parent8ff1c9b1becb79774510374a5c2ab1414bc2ffaf (diff)
downloadpyfilesystem-git-f5c7b0f0de22ef14fdc40a9e4d73d96fb1fe8ef6.tar.gz
Opener fixes
Diffstat (limited to 'fs/opener.py')
-rw-r--r--fs/opener.py19
1 files changed, 17 insertions, 2 deletions
diff --git a/fs/opener.py b/fs/opener.py
index 467f07e..b16871f 100644
--- a/fs/opener.py
+++ b/fs/opener.py
@@ -76,13 +76,15 @@ class OpenerRegistry(object):
fs_name, paren_url, fs_url, path = self.split_segments(fs_url)
+ fs_url = fs_url or paren_url
if fs_name is None and path is None:
+ fs_url = os.path.expanduser(os.path.expandvars(fs_url))
+ fs_url = os.path.normpath(os.path.abspath(fs_url))
fs_url, path = pathsplit(fs_url)
if not fs_url:
fs_url = '/'
- fs_name = fs_name or self.default_opener
- fs_url = fs_url or paren_url
+ fs_name = fs_name or self.default_opener
if fs_name is None:
fs_name = fs_default_name
@@ -190,6 +192,17 @@ class ZipOpener(Opener):
zipfs = ZipFS(zip_file, mode=mode, allow_zip_64=allow_zip_64)
return zipfs
+class RPCOpener(Opener):
+ names = ['rpc']
+
+ @classmethod
+ def get_fs(cls, registry, fs_name, fs_name_params, fs_path, writeable, create):
+ from fs.rpcfs import RPCFS
+ username, password, fs_path = registry.parse_credentials(fs_path)
+ if not fs_path.startswith('http://'):
+ fs_path = 'http://' + fs_path
+ rpcfs = RPCFS(fs_path)
+ return rpcfs
class FTPOpener(Opener):
names = ['ftp']
@@ -287,6 +300,7 @@ class TempOpener(Opener):
opener = OpenerRegistry([OSFSOpener,
ZipOpener,
+ RPCOpener,
FTPOpener,
SFTPOpener,
MemOpener,
@@ -297,6 +311,7 @@ opener = OpenerRegistry([OSFSOpener,
def main():
+ fs, path = opener.parse('galleries.zip')
print fs, path
if __name__ == "__main__":