From d44abf6e499d96b227860cff0c150b3dbd1819fb Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Tue, 1 Oct 2019 17:55:33 +0200 Subject: [PATCH] See #925: ensure we always have a proper content-type in audio response --- api/funkwhale_api/music/views.py | 6 ++++-- api/tests/music/test_views.py | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py index 4783a8d4..6822c058 100644 --- a/api/funkwhale_api/music/views.py +++ b/api/funkwhale_api/music/views.py @@ -418,10 +418,12 @@ def handle_serve(upload, user, format=None, max_bitrate=None, proxy_media=True): response = Response(status=302) response["Location"] = f.audio_file.url return response + if mt: - response = Response(content_type=mt) + # we need a non-empty response otherwise rest_framework removes our content-type + response = Response(b"noop", content_type=mt) else: - response = Response() + response = Response(b"noop") filename = f.filename mapping = {"nginx": "X-Accel-Redirect", "apache2": "X-Sendfile"} file_header = mapping[settings.REVERSE_PROXY_TYPE] diff --git a/api/tests/music/test_views.py b/api/tests/music/test_views.py index 4a423ddb..5bcbdb73 100644 --- a/api/tests/music/test_views.py +++ b/api/tests/music/test_views.py @@ -451,13 +451,16 @@ def test_handle_serve_create_mp3_version(factories, now): def test_listen_transcode(factories, now, logged_in_api_client, mocker, settings): upload = factories["music.Upload"]( - import_status="finished", library__actor__user=logged_in_api_client.user + import_status="finished", + library__actor__user=logged_in_api_client.user, + mimetype="audio/mpeg", ) url = reverse("api:v1:listen-detail", kwargs={"uuid": upload.track.uuid}) handle_serve = mocker.spy(views, "handle_serve") response = logged_in_api_client.get(url, {"to": "mp3"}) assert response.status_code == 200 + assert response["Content-Type"] == "audio/mpeg" handle_serve.assert_called_once_with( upload, -- GitLab