diff --git a/svc/src/hudctrl/api.py b/svc/src/hudctrl/api.py index 977d2f4..cfa35ac 100644 --- a/svc/src/hudctrl/api.py +++ b/svc/src/hudctrl/api.py @@ -81,6 +81,11 @@ async def list_screens(): return await svc.get_screens() +@app.get('/screen/{name}/') +async def get_screen(name: str): + return await svc.get_screen(name) + + @app.post( '/screen/{name}/refresh', response_class=fastapi.Response, diff --git a/svc/src/hudctrl/hud.py b/svc/src/hudctrl/hud.py index 10b415f..4f5f293 100644 --- a/svc/src/hudctrl/hud.py +++ b/svc/src/hudctrl/hud.py @@ -37,6 +37,18 @@ class HUDService: self.urls_file = Path('urls.json') self.lock = asyncio.Lock() + async def get_screen(self, name: str) -> HUDScreen: + assert self.marionette + async with self.lock: + handle = self.windows[name] + await self.marionette.switch_to_window(handle) + title = await self.marionette.get_title() + url = await self.marionette.get_url() + rect = await self.marionette.get_window_rect() + return HUDScreen( + handle=handle, title=title, url=url, dimensions=rect + ) + async def get_screens(self) -> Dict[str, HUDScreen]: assert self.marionette screens = {}