Skip to content

Commit c42d9d1

Browse files
committed
Fixed websocket route handler on controllers
1 parent 726e4b3 commit c42d9d1

File tree

4 files changed

+632
-1
lines changed

4 files changed

+632
-1
lines changed

ellar/common/decorators/controller.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def reflect_all_controller_type_routes(cls: t.Type[ControllerBase]) -> None:
4444
operation = reflect.get_metadata( # type: ignore
4545
CONTROLLER_OPERATION_HANDLER_KEY, item
4646
)
47-
reflect.define_metadata(CONTROLLER_CLASS_KEY, cls, item)
47+
reflect.define_metadata(CONTROLLER_CLASS_KEY, cls, operation.endpoint) # type: ignore
4848
reflect.define_metadata(
4949
CONTROLLER_OPERATION_HANDLER_KEY,
5050
operation,

ellar/core/routing/websocket/handler.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import typing as t
33

44
from starlette import status
5+
from starlette.status import WS_1008_POLICY_VIOLATION
56
from starlette.types import Message
67

78
from ellar.core.exceptions import WebSocketException, WebSocketRequestValidationError
@@ -81,6 +82,9 @@ async def _resolve_receiver_dependencies(
8182
)
8283
if errors:
8384
exc = WebSocketRequestValidationError(errors)
85+
await context.switch_to_websocket().get_client().send_json(
86+
dict(code=WS_1008_POLICY_VIOLATION, errors=exc.errors())
87+
)
8488
raise exc
8589
return extra_kwargs
8690

0 commit comments

Comments
 (0)