waterbutler/providers/filesystem/metadata.py
import os
from waterbutler.core import metadata
class BaseFileSystemMetadata(metadata.BaseMetadata):
def __init__(self, raw, folder):
super().__init__(raw)
self._folder = folder
@property
def provider(self):
return 'filesystem'
def build_path(self, path):
# TODO write a test for this
if path.lower().startswith(self._folder.lower()):
path = path[len(self._folder):]
return super().build_path(path)
class FileSystemFolderMetadata(BaseFileSystemMetadata, metadata.BaseFolderMetadata):
@property
def name(self):
return os.path.split(self.raw['path'].rstrip('/'))[1]
@property
def path(self):
return self.build_path(self.raw['path'])
class FileSystemFileMetadata(BaseFileSystemMetadata, metadata.BaseFileMetadata):
@property
def name(self):
return os.path.split(self.raw['path'])[1]
@property
def path(self):
return self.build_path(self.raw['path'])
@property
def size(self):
return self.raw['size']
@property
def modified(self):
return self.raw['modified']
@property
def modified_utc(self):
return self.raw['modified_utc']
@property
def created_utc(self):
return None
@property
def content_type(self):
return self.raw['mime_type']
@property
def etag(self):
return '{}::{}'.format(self.raw['modified'], self.raw['path'])