28 lines
862 B
Python
28 lines
862 B
Python
"""HTTP endpoints for analytics integration."""
|
|
|
|
from aiohttp import web
|
|
|
|
from homeassistant.components.http import KEY_HASS, HomeAssistantView, require_admin
|
|
from homeassistant.core import HomeAssistant
|
|
|
|
from .analytics import async_devices_payload
|
|
|
|
|
|
class AnalyticsDevicesView(HomeAssistantView):
|
|
"""View to handle analytics devices payload download requests."""
|
|
|
|
url = "/api/analytics/devices"
|
|
name = "api:analytics:devices"
|
|
|
|
@require_admin
|
|
async def get(self, request: web.Request) -> web.Response:
|
|
"""Return analytics devices payload as JSON."""
|
|
hass: HomeAssistant = request.app[KEY_HASS]
|
|
payload = await async_devices_payload(hass)
|
|
return self.json(
|
|
payload,
|
|
headers={
|
|
"Content-Disposition": "attachment; filename=analytics_devices.json"
|
|
},
|
|
)
|