Add isolated read-only official widget integration and searchable catalog
This commit is contained in:
@@ -4,8 +4,10 @@ from pigway_frame_flow.drivers.base import FrameDeviceDriver
|
||||
from pigway_frame_flow.drivers.kokonna.client import KokonnaClient
|
||||
from pigway_frame_flow.drivers.kokonna.driver import KokonnaDriver
|
||||
from pigway_frame_flow.drivers.kokonna.mock import MockClient
|
||||
from pigway_frame_flow.drivers.kokonna.widgets import WidgetReader
|
||||
from pigway_frame_flow.errors import ErrorCode as E
|
||||
from pigway_frame_flow.errors import FlowError
|
||||
from pigway_frame_flow.settings import secret
|
||||
|
||||
|
||||
class DeviceRegistry:
|
||||
@@ -38,8 +40,6 @@ class DeviceRegistry:
|
||||
root.mkdir(parents=True, exist_ok=True)
|
||||
client = MockClient(root)
|
||||
else:
|
||||
from pigway_frame_flow.settings import secret
|
||||
|
||||
key = (
|
||||
settings.api_key
|
||||
if entry.get("api_key_env", "KOKONNA_API_KEY") == "KOKONNA_API_KEY"
|
||||
@@ -48,7 +48,14 @@ class DeviceRegistry:
|
||||
self.keys.append(key)
|
||||
settings.additional_secrets.append(key)
|
||||
client = KokonnaClient(key, settings.write_enabled)
|
||||
self.drivers[id] = KokonnaDriver(client, id, settings.sanitize)
|
||||
widget_token = secret(
|
||||
str(entry.get("widget_token_env", "KOKONNA_WIDGET_TOKEN"))
|
||||
)
|
||||
settings.additional_secrets.append(widget_token)
|
||||
widgets = WidgetReader(
|
||||
widget_token, entry.get("widget_robot_id"), settings.mock
|
||||
)
|
||||
self.drivers[id] = KokonnaDriver(client, id, settings.sanitize, widgets)
|
||||
|
||||
def get(self, id: str) -> FrameDeviceDriver:
|
||||
if id not in self.drivers:
|
||||
|
||||
Reference in New Issue
Block a user