Skip to content

Commit

Permalink
Handle metadata and failed user supplied callback.
Browse files Browse the repository at this point in the history
  • Loading branch information
jzwolak committed Nov 30, 2019
1 parent 0e087d8 commit 354f2a4
Showing 1 changed file with 16 additions and 11 deletions.
27 changes: 16 additions & 11 deletions flask_tus.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ def _parse_metadata(self):
def tus_file_upload(self):

response = make_response("", 200)
if 'Upload-Metadata' in request.headers:
response.headers['Upload-Metadata'] = request.headers['Upload-Metadata']

if request.method == 'GET':
metadata = self._parse_metadata()
Expand Down Expand Up @@ -141,6 +143,8 @@ def tus_file_upload(self):

def tus_file_upload_chunk(self, resource_id):
response = make_response("", 204)
if 'Upload-Metadata' in request.headers:
response.headers['Upload-Metadata'] = request.headers['Upload-Metadata']
response.headers['Tus-Resumable'] = self.tus_api_version
response.headers['Tus-Version'] = self.tus_api_version_supported

Expand Down Expand Up @@ -207,17 +211,18 @@ def tus_file_upload_chunk(self, resource_id):
response.headers['Tus-Temp-Filename'] = resource_id

if file_size == new_offset: # file transfer complete, rename from resource id to actual filename
if self.upload_file_handler_cb is None:
os.rename(upload_file_path, os.path.join(self.upload_folder, filename))
else:
filename = self.upload_file_handler_cb(upload_file_path, filename)

p = self.redis_connection.pipeline()
p.delete("file-uploads/{}/filename".format(resource_id))
p.delete("file-uploads/{}/file_size".format(resource_id))
p.delete("file-uploads/{}/offset".format(resource_id))
p.delete("file-uploads/{}/upload-metadata".format(resource_id))
p.execute()
try:
if self.upload_file_handler_cb is None:
os.rename(upload_file_path, os.path.join(self.upload_folder, filename))
else:
filename = self.upload_file_handler_cb(upload_file_path, filename)
finally:
p = self.redis_connection.pipeline()
p.delete("file-uploads/{}/filename".format(resource_id))
p.delete("file-uploads/{}/file_size".format(resource_id))
p.delete("file-uploads/{}/offset".format(resource_id))
p.delete("file-uploads/{}/upload-metadata".format(resource_id))
p.execute()

if self.upload_finish_cb is not None:
self.upload_finish_cb()
Expand Down

0 comments on commit 354f2a4

Please sign in to comment.