def test_delete(self): client = Client(TEST_NS, HOSTS) key = 'test_file_%s_%s' % (random.random(), time.time()) client.new_file(key).write("SPAM") paths = client.get_paths(key) self.assertTrue(paths) client.delete(key) paths = client.get_paths(key) self.assertFalse(paths)
def test_delete(): client = Client(TEST_NS, HOSTS) key = 'test_file_%s_%s' % (random.random(), time.time()) client.new_file(key).write("SPAM") paths = client.get_paths(key) assert paths client.delete(key) paths = client.get_paths(key) assert not paths
def test_list_keys(): keys = ["spam", "egg", "ham"] domain = "test:list_keys:%s:%s:%s" % (random.random(), time.time(), TEST_NS) moga.create_domain(domain) mogc = Client(domain, HOSTS) for k in keys: mogc.store_content(k, k) try: files = mogc.list_keys() assert len(files) == 3 files = mogc.list_keys(limit=1) assert len(files) == 1 files = mogc.list_keys(prefix='sp') assert len(files) == 1 finally: for k in keys: mogc.delete(k) moga.delete_domain(domain)
def test_list_keys(self): keys = ["spam", "egg", "ham"] domain = "test:list_keys:%s:%s:%s" % (random.random(), time.time(), TEST_NS) self.moga.create_domain(domain) mogc = Client(domain, HOSTS) for k in keys: mogc.store_content(k, k) try: files = mogc.list_keys() assert len(files) == 3 files = mogc.list_keys(limit=1) assert len(files) == 1 files = mogc.list_keys(prefix='sp') assert len(files) == 1 finally: for k in keys: mogc.delete(k) self.moga.delete_domain(domain)
c.list_keys() # create a file in mogilefs f = c.new_file('foobar.txt') f.write('hi, my name bar, foo bar.') f.close() # show paths c.get_paths('foobar.txt') c.get_paths('404.txt') # get file data c.get_file_data('404.txt') c.get_file_data('foobar.txt') # remove c.delete('foobar.txt') # django storage backend from ogv_documents.storage.mogilefs import MogilefsStorage from django.core.files.base import ContentFile s = MogilefsStorage(domain='privatemedia', container='documents', base_url='/documents/', trackers=['127.0.0.1:7001']) s.exists('six/2011/justone.pdf') s.save(u'epic.txt', ContentFile('my epic content. now with a content file')) s.save(u'ëpîc.txt', u'my epic content with ümlauts.') s.save(s.get_available_name(s.get_valid_name(u'ëpîc.txt')), 'my epic content with umlauts.')
class Storage(BaseStorage): def __init__(self, context): BaseStorage.__init__(self, context) domain = self.context.config.MOGILEFS_STORAGE_DOMAIN trackers = self.context.config.MOGILEFS_STORAGE_TRACKERS self.storage = Client(domain=domain, trackers=trackers) def __key_for(self, url): return 'thumbor-crypto-%s' % url def __detector_key_for(self, url): return 'thumbor-detector-%s' % url def put(self, path, bytes): fp = self.storage.new_file(path) fp.write(bytes) fp.close() return path def put_crypto(self, path, data): if not self.context.config.STORES_CRYPTO_KEY_FOR_EACH_IMAGE: return if not self.context.server.security_key: raise RuntimeError("""STORES_CRYPTO_KEY_FOR_EACH_IMAGE can't be True if no SECURITY_KEY specified""") key = self.__key_for(path) fp = self.storage.new_file(key) fp.write(self.context.server.security_key) fp.close() return key def put_detector_data(self, path, data): key = self.__detector_key_for(path) fp = self.storage.new_file(key) fp.write(dumps(data)) fp.close() return key def get_crypto(self, path): if not self.context.config.STORES_CRYPTO_KEY_FOR_EACH_IMAGE: return None crypto = self.storage.get_file_data(self.__key_for(path)) if not crypto: return None return crypto def get_detector_data(self, path): data = self.storage.get_file_data(self.__detector_key_for(path)) if not data: return None return loads(data) def get(self, path): return self.storage.get_file_data(path) is not None def exists(self, path): return self.storage.keys(path) is not None def remove(self, path): if not self.exists(path): return return self.storage.delete(path)
class Storage(BaseStorage): def __init__(self, context): BaseStorage.__init__(self, context) domain = self.context.config.MOGILEFS_STORAGE_DOMAIN trackers = self.context.config.MOGILEFS_STORAGE_TRACKERS self.storage = Client(domain=domain, trackers=trackers) def __key_for(self, url): return 'thumbor-crypto-%s' % url def __detector_key_for(self, url): return 'thumbor-detector-%s' % url def put(self, path, bytes): fp = self.storage.new_file(path) fp.write(bytes) fp.close() return path def put_crypto(self, path, data): if not self.context.config.STORES_CRYPTO_KEY_FOR_EACH_IMAGE: return if not self.context.server.security_key: raise RuntimeError( """STORES_CRYPTO_KEY_FOR_EACH_IMAGE can't be True if no SECURITY_KEY specified""") key = self.__key_for(path) fp = self.storage.new_file(key) fp.write(self.context.server.security_key) fp.close() return key def put_detector_data(self, path, data): key = self.__detector_key_for(path) fp = self.storage.new_file(key) fp.write(dumps(data)) fp.close() return key def get_crypto(self, path): if not self.context.config.STORES_CRYPTO_KEY_FOR_EACH_IMAGE: return None crypto = self.storage.get_file_data(self.__key_for(path)) if not crypto: return None return crypto def get_detector_data(self, path): data = self.storage.get_file_data(self.__detector_key_for(path)) if not data: return None return loads(data) def get(self, path): return self.storage.get_file_data(path) is not None def exists(self, path): return self.storage.keys(path) is not None def remove(self, path): if not self.exists(path): return return self.storage.delete(path)