From d99757658c4bb110b273b9f7269e9a4cd2320afa Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Fri, 8 Feb 2019 17:36:10 +0100 Subject: [PATCH] Fix #705: Can now use a local file with FUNKWHALE_SPA_HTML_ROOT to avoid sending an HTTP request --- api/funkwhale_api/common/middleware.py | 4 ++++ api/tests/common/test_middleware.py | 6 ++++++ changes/changelog.d/705.enhancement | 1 + 3 files changed, 11 insertions(+) create mode 100644 changes/changelog.d/705.enhancement diff --git a/api/funkwhale_api/common/middleware.py b/api/funkwhale_api/common/middleware.py index 96e9c45a6..59d50b30e 100644 --- a/api/funkwhale_api/common/middleware.py +++ b/api/funkwhale_api/common/middleware.py @@ -56,6 +56,10 @@ def serve_spa(request): def get_spa_html(spa_url): + if spa_url.startswith("/"): + # we try to open a local file + with open(spa_url) as f: + return f.read() cache_key = "spa-html:{}".format(spa_url) cached = caches["local"].get(cache_key) if cached: diff --git a/api/tests/common/test_middleware.py b/api/tests/common/test_middleware.py index 2ed875a53..dd7cd7634 100644 --- a/api/tests/common/test_middleware.py +++ b/api/tests/common/test_middleware.py @@ -126,6 +126,12 @@ def test_get_spa_html_from_http(local_cache, r_mock, mocker, settings): ) +def test_get_spa_html_from_disk(tmpfile): + with open(tmpfile.name, "wb") as f: + f.write(b"hello world") + assert middleware.get_spa_html(tmpfile.name) == "hello world" + + def test_get_route_head_tags(mocker, settings): match = mocker.Mock(args=[], kwargs={"pk": 42}, func=mocker.Mock()) resolve = mocker.patch("django.urls.resolve", return_value=match) diff --git a/changes/changelog.d/705.enhancement b/changes/changelog.d/705.enhancement new file mode 100644 index 000000000..9f25c9cbd --- /dev/null +++ b/changes/changelog.d/705.enhancement @@ -0,0 +1 @@ +Can now use a local file with FUNKWHALE_SPA_HTML_ROOT to avoid sending an HTTP request (#705)