This commit is contained in:
Adam Hopkins
2021-02-04 00:42:24 +02:00
parent 967c4e6a4e
commit a434ffa8b7
8 changed files with 124 additions and 64 deletions

View File

@@ -1,6 +1,6 @@
from enum import Enum, auto
from functools import partial
from typing import Set
from typing import List
from sanic.models.futures import FutureListener
@@ -17,7 +17,7 @@ class ListenerEvent(str, Enum):
class ListenerMixin:
def __init__(self, *args, **kwargs) -> None:
self._future_listeners: Set[FutureListener] = set()
self._future_listeners: List[FutureListener] = list()
def _apply_listener(self, listener: FutureListener):
raise NotImplementedError
@@ -32,7 +32,7 @@ class ListenerMixin:
nonlocal apply
future_listener = FutureListener(listener, event)
self._future_listeners.add(future_listener)
self._future_listeners.append(future_listener)
if apply:
self._apply_listener(future_listener)
return listener

View File

@@ -1,12 +1,12 @@
from functools import partial
from typing import Set
from typing import List
from sanic.models.futures import FutureMiddleware
class MiddlewareMixin:
def __init__(self, *args, **kwargs) -> None:
self._future_middleware: Set[FutureMiddleware] = set()
self._future_middleware: List[FutureMiddleware] = list()
def _apply_middleware(self, middleware: FutureMiddleware):
raise NotImplementedError
@@ -27,7 +27,7 @@ class MiddlewareMixin:
nonlocal apply
future_middleware = FutureMiddleware(middleware, attach_to)
self._future_middleware.add(future_middleware)
self._future_middleware.append(future_middleware)
if apply:
self._apply_middleware(future_middleware)
return middleware

View File

@@ -52,11 +52,6 @@ class RouteMixin:
of type :class:`FutureRoute`
"""
# TODO:
# - run when applying future, not here
if websocket:
self.enable_websocket()
# Fix case where the user did not prefix the URL with a /
# and will probably get confused as to why it's not working
if not uri.startswith("/"):
@@ -85,20 +80,6 @@ class RouteMixin:
# variable will be a tuple of (existing routes, handler fn)
_, handler = handler
# TODO:
# - move websocket handler out and attach it when applying
if websocket:
websocket_handler = partial(
self._websocket_handler,
handler,
subprotocols=subprotocols,
)
websocket_handler.__name__ = (
"websocket_handler_" + handler.__name__
)
websocket_handler.is_websocket = True
handler = websocket_handler
# TODO:
# - THink this thru.... do we want all routes namespaced?
# -
@@ -119,6 +100,8 @@ class RouteMixin:
version,
name,
ignore_body,
websocket,
subprotocols,
)
self._future_routes.add(route)