Skip to content

Commit 8e282b6

Browse files
committed
fix: typing
1 parent e296da0 commit 8e282b6

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

metricq_sink_websocket/views.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import aiohttp
66
from aiohttp.web import Request
7-
from metricq import JsonDict, get_logger
7+
from metricq import Metric, get_logger
88

99
from .web_socket import MetricqWebSocketResponse
1010

@@ -17,15 +17,19 @@ async def websocket_handler(request: Request) -> MetricqWebSocketResponse:
1717
ws = MetricqWebSocketResponse(sink)
1818
await ws.prepare(request)
1919
logger.info("Websocket opened")
20-
metrics: set[JsonDict] = set()
20+
metrics: set[Metric] = set()
2121
try:
2222
async for msg in ws:
2323
if msg.type == aiohttp.WSMsgType.TEXT:
2424
logger.debug("Parsing message: {}", msg.data)
2525
try:
2626
msg_data = json.loads(msg.data)
2727
if msg_data["function"] == "subscribe":
28-
new_metrics = set(msg_data["metrics"])
28+
if not isinstance(list, msg_data["metrics"]) or any(
29+
not isinstance(m, str) for m in msg_data["metrics"]
30+
):
31+
raise TypeError("metrics must be a list of strings")
32+
new_metrics: set[str] = set(msg_data["metrics"])
2933
metadata = await sink.subscribe_ws(ws, new_metrics - metrics)
3034
await ws.send_metadata(metadata)
3135
metrics |= new_metrics

0 commit comments

Comments
 (0)