Check Content-Type up to semicolon.
authorAntony Chazapis <chazapis@gmail.com>
Fri, 23 Mar 2012 13:25:30 +0000 (15:25 +0200)
committerAntony Chazapis <chazapis@gmail.com>
Fri, 23 Mar 2012 13:25:30 +0000 (15:25 +0200)
Fixes #2240

snf-pithos-backend/pithos/backends/modular.py
snf-pithos-tools/pithos/tools/fs.py
snf-pithos-tools/pithos/tools/sync.py

index c90a6e1..453a7a9 100644 (file)
@@ -1061,7 +1061,7 @@ class ModularBackend(BaseBackend):
             if node is not None:
                 props = self.node.version_lookup(node, inf, CLUSTER_NORMAL)
             if props is not None:
-                if props[self.TYPE] in ('application/directory', 'application/folder'):
+                if props[self.TYPE].split(';', 1)[0].strip() in ('application/directory', 'application/folder'):
                     formatted.append((p.rstrip('/') + '/', self.MATCH_PREFIX))
                 formatted.append((p, self.MATCH_EXACT))
         return formatted
@@ -1081,7 +1081,7 @@ class ModularBackend(BaseBackend):
                 if node is not None:
                     props = self.node.version_lookup(node, inf, CLUSTER_NORMAL)
                 if props is not None:
-                    if props[self.TYPE] in ('application/directory', 'application/folder'):
+                    if props[self.TYPE].split(';', 1)[0].strip() in ('application/directory', 'application/folder'):
                         return p
         return None
     
index b6dae70..264ba0d 100755 (executable)
@@ -248,7 +248,7 @@ class StoreFS(Operations):
         gid = int(meta.get('x-account-meta-gid', 0))
         size = int(meta.get('content-length', 0))
         
-        if meta['content-type'] == 'application/directory':
+        if meta['content-type'].split(';', 1)[0].strip() == 'application/directory':
             mode = int(meta.get('x-object-meta-mode', 0755))
             flags = S_IFDIR
             nlink = 2
index 4c56466..d3ac107 100755 (executable)
@@ -148,7 +148,7 @@ class State(object):
             meta = client.retrieve_object_metadata(self.container, path)
         except Fault:
             return 'DEL'
-        if meta.get('content-type', None) == 'application/directory':
+        if meta.get('content-type', '').split(';', 1)[0].strip() == 'application/directory':
             return 'DIR'
         else:
             return meta['x-object-hash']
@@ -292,7 +292,7 @@ def walk(dir, container):
             if 'subdir' in object:
                 continue
             name = object['name']
-            if object['content_type'] == 'application/directory':
+            if object['content_type'].split(';', 1)[0].strip() == 'application/directory':
                 dirs.add(name)
             else:
                 files.add(name)