1 """Implement a view to provide proxied Plex thumbnails to the media browser."""
3 from __future__
import annotations
5 from http
import HTTPStatus
8 from aiohttp
import web
9 from aiohttp.hdrs
import CACHE_CONTROL
10 from aiohttp.typedefs
import LooseHeaders
15 from .const
import SERVERS
16 from .helpers
import get_plex_data
18 _LOGGER = logging.getLogger(__name__)
22 """Media player view to serve a Plex image."""
24 name =
"api:plex:image"
25 url =
"/api/plex_image_proxy/{server_id}/{media_content_id}"
31 media_content_id: str,
33 """Start a get request."""
34 if not request[KEY_AUTHENTICATED]:
35 return web.Response(status=HTTPStatus.UNAUTHORIZED)
37 hass = request.app[KEY_HASS]
39 return web.Response(status=HTTPStatus.NOT_FOUND)
41 if (image_url := server.thumbnail_cache.get(media_content_id))
is None:
42 return web.Response(status=HTTPStatus.NOT_FOUND)
47 return web.Response(status=HTTPStatus.SERVICE_UNAVAILABLE)
49 headers: LooseHeaders = {CACHE_CONTROL:
"max-age=3600"}
50 return web.Response(body=data, content_type=content_type, headers=headers)
web.Response get(self, web.Request request, str server_id, str media_content_id)
PlexData get_plex_data(HomeAssistant hass)