diff options
author | drebs <drebs@leap.se> | 2017-12-22 18:28:55 -0200 |
---|---|---|
committer | drebs <drebs@leap.se> | 2017-12-26 09:04:50 -0200 |
commit | d627675a6879d9ac7cbdacdd3f743c14a24c5167 (patch) | |
tree | dc4037279079a0ab38bf476051b54cd8623c9d9a /src/leap/soledad/server/_blobs | |
parent | 5a3d6cd05e8f12aba2527b2d711cd0aa7a27f3e8 (diff) |
[bug] add BlobNotFound exception to methods interface
Diffstat (limited to 'src/leap/soledad/server/_blobs')
-rw-r--r-- | src/leap/soledad/server/_blobs/fs_backend.py | 12 | ||||
-rw-r--r-- | src/leap/soledad/server/_blobs/resource.py | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/leap/soledad/server/_blobs/fs_backend.py b/src/leap/soledad/server/_blobs/fs_backend.py index e1c49910..79bbc4d7 100644 --- a/src/leap/soledad/server/_blobs/fs_backend.py +++ b/src/leap/soledad/server/_blobs/fs_backend.py @@ -104,6 +104,8 @@ class FilesystemBlobsBackend(object): def read_blob(self, user, blob_id, consumer, namespace='', range=None): logger.info('reading blob: %s - %s@%s' % (user, blob_id, namespace)) path = self._get_path(user, blob_id, namespace) + if not os.path.isfile(path): + raise BlobNotFound((user, blob_id)) logger.debug('blob path: %s' % path) with open(path) as fd: if range is None: @@ -122,7 +124,7 @@ class FilesystemBlobsBackend(object): except Exception as e: return defer.fail(e) if not os.path.isfile(path): - return defer.fail(BlobNotFound()) + return defer.fail(BlobNotFound((user, blob_id))) if not os.path.isfile(path + '.flags'): return defer.succeed([]) with open(path + '.flags', 'r') as flags_file: @@ -135,7 +137,7 @@ class FilesystemBlobsBackend(object): except Exception as e: return defer.fail(e) if not os.path.isfile(path): - return defer.fail(BlobNotFound()) + return defer.fail(BlobNotFound((user, blob_id))) for flag in flags: if flag not in ACCEPTED_FLAGS: return defer.fail(InvalidFlag(flag)) @@ -184,7 +186,7 @@ class FilesystemBlobsBackend(object): except Exception as e: return defer.fail(e) if not os.path.isfile(blob_path): - return defer.fail(BlobNotFound()) + return defer.fail(BlobNotFound((user, blob_id))) self.__touch(blob_path + '.deleted') os.unlink(blob_path) try: @@ -198,6 +200,8 @@ class FilesystemBlobsBackend(object): blob_path = self._get_path(user, blob_id, namespace) except Exception as e: return defer.fail(e) + if not os.path.isfile(blob_path): + return defer.fail(BlobNotFound((user, blob_id))) size = os.stat(blob_path).st_size return defer.succeed(size) @@ -270,7 +274,7 @@ class FilesystemBlobsBackend(object): except Exception as e: return defer.fail(e) if not os.path.isfile(blob_path): - return defer.fail(BlobNotFound()) + return defer.fail(BlobNotFound((user, blob_id))) with open(blob_path) as doc_file: doc_file.seek(-16, 2) tag = base64.urlsafe_b64encode(doc_file.read()) diff --git a/src/leap/soledad/server/_blobs/resource.py b/src/leap/soledad/server/_blobs/resource.py index dd9af861..0772c29b 100644 --- a/src/leap/soledad/server/_blobs/resource.py +++ b/src/leap/soledad/server/_blobs/resource.py @@ -206,6 +206,8 @@ class BlobsResource(resource.Resource): d = self._handler.get_blob_size(user, blob_id, namespace=namespace) d.addCallback(_handleRangeHeader) + d.addErrback(_catchBlobNotFound, request, user, blob_id) + d.addErrback(_catchAllErrors, request) return NOT_DONE_YET def render_DELETE(self, request): |