diff --git a/api/funkwhale_api/music/views.py b/api/funkwhale_api/music/views.py index 4783a8d45a251e4850e65510482669187290b183..6822c058ae9bf5c9dd734def0c647790dcc2534a 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 4a423ddb16043425c3b92358369f8cca8d5bdad8..5bcbdb7356a740ce1f1a641974ff2340c5d34fec 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,