41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""HACS http endpoints."""
|
|
from aiohttp import web
|
|
from homeassistant.components.http import HomeAssistantView
|
|
|
|
from custom_components.hacs.helpers.functions.logger import getLogger
|
|
from custom_components.hacs.webresponses.category import async_serve_category_file
|
|
from custom_components.hacs.webresponses.frontend import async_serve_frontend
|
|
from custom_components.hacs.webresponses.iconset import serve_iconset
|
|
|
|
IGNORE = []
|
|
|
|
_LOGGER = getLogger()
|
|
|
|
|
|
class HacsFrontend(HomeAssistantView):
|
|
"""Base View Class for HACS."""
|
|
|
|
requires_auth = False
|
|
name = "hacs_files"
|
|
url = r"/hacsfiles/{requested_file:.+}"
|
|
|
|
async def get(self, request, requested_file): # pylint: disable=unused-argument
|
|
"""Handle HACS Web requests."""
|
|
return await get_file_response(request, requested_file)
|
|
|
|
|
|
async def get_file_response(request, requested_file):
|
|
"""Get file."""
|
|
|
|
if requested_file in IGNORE:
|
|
_LOGGER.debug("Ignoring request for %s", requested_file)
|
|
return web.Response(status=200)
|
|
|
|
elif requested_file.startswith("frontend/"):
|
|
return await async_serve_frontend(requested_file)
|
|
|
|
elif requested_file == "iconset.js":
|
|
return serve_iconset()
|
|
|
|
return await async_serve_category_file(request, requested_file)
|