From a4a40fdf896e99fd9deea711e4aacc5e5a846f1e Mon Sep 17 00:00:00 2001 From: "Alan D. Tse" Date: Fri, 19 Feb 2021 00:04:40 -0800 Subject: [PATCH] fix: process i18n urls --- teslajsonpy/teslaproxy.py | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/teslajsonpy/teslaproxy.py b/teslajsonpy/teslaproxy.py index 4d1a6298..46937a85 100644 --- a/teslajsonpy/teslaproxy.py +++ b/teslajsonpy/teslaproxy.py @@ -47,7 +47,16 @@ def __init__(self, proxy_url: URL, host_url: URL) -> None: } self.modifiers.update( - {"prepend_url_ajax": partial(self.prepend_relative_urls, self.access_url())} + { + "prepend_url_ajax": partial( + self.prepend_relative_urls, self.access_url() + ), + "application/javascript": { + "prepend_url_i18n": partial( + self.prepend_i18n_path, URL(self.access_url().path) + ) + }, + } ) async def test_url( @@ -121,6 +130,31 @@ async def prepend_relative_urls(self, base_url: URL, html: Text) -> Text: html=html, ) + async def prepend_i18n_path(self, base_url: URL, html: Text) -> Text: + """Prepend path for i18n loadPath so it'll reach the proxy. + + This is intended to be used for to place the proxy_url path in front of relative urls for loadPath in i18next. + + Args: + base_url (URL): Base URL to prepend + html (Text): Text to replace + + Returns + Text: Replaced text + + """ + if not base_url: + _LOGGER.debug("No base_url specified") + return html + + return await find_regex_urls( + partial(prepend_url, base_url, encoded=True), + { + "method_func": r"""(?:loadPath:)\s*?["']([^"']*)[\"\']""", + }, + html=html, + ) + async def modify_headers( self, site: URL, request: web.Request ) -> multidict.MultiDict: