diff options
author | Victor Shyba <victor1984@riseup.net> | 2017-03-15 20:28:23 -0300 |
---|---|---|
committer | drebs <drebs@leap.se> | 2017-04-04 18:27:33 +0200 |
commit | 3ae9343ebe4f3b7ddcdafcee22c987e49dead451 (patch) | |
tree | 92a7eac7c09bed83665719243e3e13318f220372 /server/src/leap | |
parent | 26bdafe0445cdd5c1b1174dedfd9292847e47758 (diff) |
[feature] send tag header from server
Diffstat (limited to 'server/src/leap')
-rw-r--r-- | server/src/leap/soledad/server/_blobs.py | 16 |
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): |