Fix audio serving issues under S3/nginx when signatures are enabled
This commit is contained in:
parent
8de30049bf
commit
4a5484c7eb
|
@ -320,6 +320,10 @@ def get_file_path(audio_file):
|
||||||
)
|
)
|
||||||
path = "/music" + audio_file.replace(prefix, "", 1)
|
path = "/music" + audio_file.replace(prefix, "", 1)
|
||||||
if path.startswith("http://") or path.startswith("https://"):
|
if path.startswith("http://") or path.startswith("https://"):
|
||||||
|
protocol, remainder = path.split("://", 1)
|
||||||
|
hostname, r_path = remainder.split("/", 1)
|
||||||
|
r_path = urllib.parse.quote(r_path)
|
||||||
|
path = protocol + "://" + hostname + "/" + r_path
|
||||||
return (settings.PROTECT_FILES_PATH + "/media/" + path).encode("utf-8")
|
return (settings.PROTECT_FILES_PATH + "/media/" + path).encode("utf-8")
|
||||||
# needed to serve files with % or ? chars
|
# needed to serve files with % or ? chars
|
||||||
path = urllib.parse.quote(path)
|
path = urllib.parse.quote(path)
|
||||||
|
|
|
@ -247,6 +247,18 @@ def test_serve_file_in_place_nginx_encode_url(
|
||||||
assert response["X-Accel-Redirect"] == expected
|
assert response["X-Accel-Redirect"] == expected
|
||||||
|
|
||||||
|
|
||||||
|
def test_serve_s3_nginx_encode_url(mocker, settings):
|
||||||
|
settings.PROTECT_FILE_PATH = "/_protected/media"
|
||||||
|
settings.REVERSE_PROXY_TYPE = "nginx"
|
||||||
|
audio_file = mocker.Mock(url="https://s3.storage.example/path/to/mp3?aws=signature")
|
||||||
|
|
||||||
|
expected = (
|
||||||
|
b"/_protected/media/https://s3.storage.example/path/to/mp3%3Faws%3Dsignature"
|
||||||
|
)
|
||||||
|
|
||||||
|
assert views.get_file_path(audio_file) == expected
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"proxy,serve_path,expected",
|
"proxy,serve_path,expected",
|
||||||
[
|
[
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix audio serving issues under S3/nginx when signatures are enabled
|
Loading…
Reference in New Issue