diff --git a/src/resources.py b/src/resources.py index 6f79e3f..cded0f8 100644 --- a/src/resources.py +++ b/src/resources.py @@ -61,6 +61,22 @@ class SampleResource(Resource): if len(generated_tag) > 2: # Ensure minimum length break + # Handle mega-autismo-cliento + soundfile_content_length = soundfile.content_length + if soundfile_content_length <= 0: # BRUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUH + current_app.logger.debug( + "The uploader did not provide content-length for the sound file... Calculating manually..." + ) + # So, this is a seekable stream, so we just seek to the end + old_ptr = soundfile.tell() + soundfile.seek(0, 2) + # Check where is the end (= content length) + soundfile_content_length = soundfile.tell() + # Seek back to where the stream was + soundfile.seek(old_ptr, 0) + + # It's insane, that you can not set this field in curl + record = SampleMetadata( device_id=desc['device_id'], device_date=desc['date'], @@ -75,7 +91,7 @@ class SampleResource(Resource): 'wave.wav', soundfile, soundfile.content_type, - {'Content-Length': soundfile.content_length})}).raise_for_status() + {'Content-Length': soundfile_content_length})}).raise_for_status() # AnyƔdat curl am credentials = pika.PlainCredentials(current_app.config['FLASK_PIKA_PARAMS']['username'], current_app.config['FLASK_PIKA_PARAMS']['password']) connection = pika.BlockingConnection(