Remove the inner-classing-ness of StorageObjectWrapper

This commit is contained in:
Christopher Allan Webber 2011-08-31 21:36:24 -05:00
parent 781be9ee6f
commit 4dea708cd3

View File

@ -228,30 +228,11 @@ class BasicFileStorage(StorageInterface):
return self._resolve_filepath(filepath)
# ----------------------------------------------------
# OpenStack/Rackspace Cloud's Swift/CloudFiles support
# ----------------------------------------------------
class CloudFilesStorage(StorageInterface):
class StorageObjectWrapper():
"""
Wrapper for python-cloudfiles's cloudfiles.storage_object.Object
used to circumvent the mystic `medium.jpg` corruption issue, where
we had both python-cloudfiles and PIL doing buffering on both
ends and that breaking things.
This wrapper currently meets mediagoblin's needs for a public_store
file-like object.
"""
def __init__(self, storage_object):
self.storage_object = storage_object
def read(self, *args, **kwargs):
return self.storage_object.read(*args, **kwargs)
def write(self, data, *args, **kwargs):
if self.storage_object.size and type(data) == str:
data = self.read() + data
self.storage_object.write(data, *args, **kwargs)
def __init__(self, **kwargs):
self.param_container = kwargs.get('cloudfiles_container')
self.param_user = kwargs.get('cloudfiles_user')
@ -324,6 +305,33 @@ class CloudFilesStorage(StorageInterface):
self._resolve_filepath(filepath)])
class StorageObjectWrapper():
"""
Wrapper for python-cloudfiles's cloudfiles.storage_object.Object
used to circumvent the mystic `medium.jpg` corruption issue, where
we had both python-cloudfiles and PIL doing buffering on both
ends and that breaking things.
This wrapper currently meets mediagoblin's needs for a public_store
file-like object.
"""
def __init__(self, storage_object):
self.storage_object = storage_object
def read(self, *args, **kwargs):
return self.storage_object.read(*args, **kwargs)
def write(self, data, *args, **kwargs):
if self.storage_object.size and type(data) == str:
data = self.read() + data
self.storage_object.write(data, *args, **kwargs)
# ------------
# MountStorage
# ------------
class MountStorage(StorageInterface):
"""
Experimental "Mount" virtual Storage Interface