From 841db9f072401f2b6f40873b35c733723a54de36 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Mon, 24 Jul 2017 18:11:14 -0300 Subject: [bug] make download namespace-aware --- src/leap/soledad/client/_db/blobs.py | 9 +++++---- src/leap/soledad/server/_blobs.py | 4 ++-- 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src/leap') diff --git a/src/leap/soledad/client/_db/blobs.py b/src/leap/soledad/client/_db/blobs.py index 148e1ff1..e95f9d9e 100644 --- a/src/leap/soledad/client/_db/blobs.py +++ b/src/leap/soledad/client/_db/blobs.py @@ -302,13 +302,13 @@ class BlobManager(object): defer.returnValue((yield response.json())) @defer.inlineCallbacks - def get(self, blob_id): + def get(self, blob_id, namespace=None): local_blob = yield self.local.get(blob_id) if local_blob: logger.info("Found blob in local database: %s" % blob_id) defer.returnValue(local_blob) - result = yield self._download_and_decrypt(blob_id) + result = yield self._download_and_decrypt(blob_id, namespace) if not result: defer.returnValue(None) @@ -347,11 +347,12 @@ class BlobManager(object): logger.info("Finished upload: %s" % (blob_id,)) @defer.inlineCallbacks - def _download_and_decrypt(self, blob_id): + def _download_and_decrypt(self, blob_id, namespace=None): logger.info("Staring download of blob: %s" % blob_id) # TODO this needs to be connected in a tube uri = urljoin(self.remote, self.user + '/' + blob_id) - data = yield self._client.get(uri) + params = {'namespace': namespace} if namespace else None + data = yield self._client.get(uri, params=params) if data.code == 404: logger.warn("Blob not found in server: %s" % blob_id) diff --git a/src/leap/soledad/server/_blobs.py b/src/leap/soledad/server/_blobs.py index 6afd802c..b6323906 100644 --- a/src/leap/soledad/server/_blobs.py +++ b/src/leap/soledad/server/_blobs.py @@ -68,7 +68,7 @@ class FilesystemBlobsBackend(object): self.path = blobs_path def read_blob(self, user, blob_id, request, namespace=''): - logger.info('reading blob: %s - %s' % (user, blob_id)) + logger.info('reading blob: %s - %s@%s' % (user, blob_id, namespace)) path = self._get_path(user, blob_id, namespace) logger.debug('blob path: %s' % path) _file = static.File(path, defaultType='application/octet-stream') @@ -249,7 +249,7 @@ class BlobsResource(resource.Resource): filter_flag=filter_flag) if 'only_flags' in request.args: return self._handler.get_flags(user, blob_id, request, namespace) - self._handler.add_tag_header(user, blob_id, request) + self._handler.add_tag_header(user, blob_id, request, namespace) return self._handler.read_blob(user, blob_id, request, namespace) def render_DELETE(self, request): -- cgit v1.2.3