summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrebs <drebs@leap.se>2017-12-08 22:16:11 -0200
committerdrebs <drebs@leap.se>2017-12-13 13:49:25 -0200
commit96dff026a7b58d116543b4f181c93946e04894b0 (patch)
tree7141497b46c35987a5a1d11b667b0d797c5b50c6 /src
parent601eb94cabe9d7003bdda012338bf0a3edfd46cb (diff)
[refactor] make count() return a deferred
Diffstat (limited to 'src')
-rw-r--r--src/leap/soledad/server/_blobs.py8
-rw-r--r--src/leap/soledad/server/interfaces.py6
2 files changed, 9 insertions, 5 deletions
diff --git a/src/leap/soledad/server/_blobs.py b/src/leap/soledad/server/_blobs.py
index 21becbf3..42c00841 100644
--- a/src/leap/soledad/server/_blobs.py
+++ b/src/leap/soledad/server/_blobs.py
@@ -159,7 +159,7 @@ class FilesystemBlobsBackend(object):
count = 0
for _, _, filenames in os.walk(base_path):
count += len(filter(lambda i: not i.endswith('.flags'), filenames))
- return json.dumps({"count": count})
+ return defer.succeed(count)
def list_blobs(self, user, namespace='', order_by=None, deleted=False,
filter_flag=False):
@@ -279,7 +279,11 @@ class BlobsResource(resource.Resource):
logger.info("http get: %s" % request.path)
user, blob_id, namespace = self._validate(request)
if not blob_id and request.args.get('only_count', [False])[0]:
- return self._handler.count(user, namespace)
+ d = self._handler.count(user, namespace)
+ d.addCallback(lambda count: json.dumps({"count": count}))
+ d.addCallback(lambda count: request.write(count))
+ d.addCallback(lambda _: request.finish())
+ return NOT_DONE_YET
elif not blob_id:
order = request.args.get('order_by', [None])[0]
filter_flag = request.args.get('filter_flag', [False])[0]
diff --git a/src/leap/soledad/server/interfaces.py b/src/leap/soledad/server/interfaces.py
index a7caf917..a1762647 100644
--- a/src/leap/soledad/server/interfaces.py
+++ b/src/leap/soledad/server/interfaces.py
@@ -98,9 +98,9 @@ class IBlobsBackend(Interface):
:param namespace: Restrict the count to a certain namespace.
:type namespace: str
- :return: The number of blobs in the backend storage, possibly
- restricted to a certain namespace.
- :rtype: int
+ :return: A deferred that fires with the number of blobs in the backend
+ storage, possibly restricted to a certain namespace.
+ :rtype: twisted.internet.defer.Deferred
"""
def list_blobs(user, namespace='', order_by=None, deleted=False,