summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorVictor Shyba <victor1984@riseup.net>2017-03-15 20:28:23 -0300
committerdrebs <drebs@leap.se>2017-04-04 18:27:33 +0200
commit3ae9343ebe4f3b7ddcdafcee22c987e49dead451 (patch)
tree92a7eac7c09bed83665719243e3e13318f220372 /server
parent26bdafe0445cdd5c1b1174dedfd9292847e47758 (diff)
[feature] send tag header from server
Diffstat (limited to 'server')
-rw-r--r--server/src/leap/soledad/server/_blobs.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/server/src/leap/soledad/server/_blobs.py b/server/src/leap/soledad/server/_blobs.py
index 3b840391..454ff5fe 100644
--- a/server/src/leap/soledad/server/_blobs.py
+++ b/server/src/leap/soledad/server/_blobs.py
@@ -26,6 +26,7 @@ environments.
"""
import commands
import os
+import base64
from twisted.web import static
from twisted.web import resource
@@ -66,6 +67,14 @@ class IBlobsBackend(Interface):
:returns: a deferred that fires upon finishing.
"""
+ def tag_header(user, blob_id, request):
+ """
+ Adds a header 'Tag' with the last 20 bytes of the encoded file,
+ which contains the tag.
+
+ :returns: a deferred that fires upon finishing.
+ """
+
def write_blob(user, blob_id, request):
"""
Write blob to the storage, reading it from the passed request.
@@ -91,6 +100,12 @@ class FilesystemBlobsBackend(object):
path = '/tmp/blobs/'
quota = 200 * 1024 # in KB
+ def tag_header(self, user, blob_id, request):
+ with open(self._get_path(user, blob_id)) as doc_file:
+ doc_file.seek(-16, 2)
+ tag = base64.urlsafe_b64encode(doc_file.read())
+ request.responseHeaders.setRawHeaders('Tag', [tag])
+
def read_blob(self, user, blob_id, request):
print "USER", user
print "BLOB_ID", blob_id
@@ -168,6 +183,7 @@ class BlobsResource(resource.Resource):
def render_GET(self, request):
print "GETTING", request.path
user, blob_id = self._split_path(request.path)
+ self._handler.tag_header(user, blob_id, request)
return self._handler.read_blob(user, blob_id, request)
def render_PUT(self, request):