This commit is contained in:
Thomas Lovén 2019-06-26 23:15:04 +02:00
parent 991c0968ae
commit 1e0bc60220
2 changed files with 40 additions and 39 deletions

View File

@ -1,53 +1,18 @@
import logging
# import .mod_view
from aiohttp import web
import aiofiles
from homeassistant.components.http import HomeAssistantView
from .mod_view import setup_view
REQUIREMENTS = ["aiofiles"]
DATA_EXTRA_MODULE_URL = 'frontend_extra_module_url'
FRONTEND_SCRIPT_URL '/browser_mod.js'
_LOGGER = logging.getLogger(__name__)
async def async_setup(hass, config):
_LOGGER.error(f"Setting up browser_mod")
setup(hass, '/browser_mod.js')
setup_view(hass, FRONTEND_SCRIPT_URL)
_LOGGER.error(f"Registered frontend script")
return True
def setup(hass, url):
if DATA_EXTRA_MODULE_URL not in hass.data:
hass.data[DATA_EXTRA_MODULE_URL] = set()
url_set = hass.data[DATA_EXTRA_MODULE_URL]
url_set.add(url)
hass.http.register_view(ModView(hass, url))
class ModView(HomeAssistantView):
name = "browser_mod_script"
requires_auth = False
def __init__(self, hass, url):
self.url = url
self.config_dir = hass.config.path()
async def get(self, request):
path = "{}/custom_components/browser_mod/browser_mod.js".format(self.config_dir)
filecontent = ""
try:
async with aiofiles.open(path, mode="r", encoding="utf-8", errors="ignore") as localfile:
filecontent = await localfile.read()
localfile.close()
except Exception as exception:
pass
return web.Response(body=filecontent, content_type="text/javascript", charset="utf-8")

View File

@ -0,0 +1,36 @@
from aiohttp import web
import aiofiles
from homeassistant.components.http import HomeAssistantView
DATA_EXTRA_MODULE_URL = 'frontend_extra_module_url'
def setup_view(hass, url):
if DATA_EXTRA_MODULE_URL not in hass.data:
hass.data[DATA_EXTRA_MODULE_URL] = set()
url_set = hass.data[DATA_EXTRA_MODULE_URL]
url_set.add(url)
hass.http.register_view(ModView(hass, url))
class ModView(HomeAssistantView):
name = "browser_mod_script"
requires_auth = False
def __init__(self, hass, url):
self.url = url
self.config_dir = hass.config.path()
async def get(self, request):
path = "{}/custom_components/browser_mod/browser_mod.js".format(self.config_dir)
filecontent = ""
try:
async with aiofiles.open(path, mode="r", encoding="utf-8", errors="ignore") as localfile:
filecontent = await localfile.read()
localfile.close()
except Exception as exception:
pass
return web.Response(body=filecontent, content_type="text/javascript", charset="utf-8")