diff --git a/src/turbosloth/app.py b/src/turbosloth/app.py index 476be8e..f3b99a5 100644 --- a/src/turbosloth/app.py +++ b/src/turbosloth/app.py @@ -12,7 +12,7 @@ from .interfaces.serialize_selector import SerializeSelector from .interfaces.serialized import SerializedResponse, SerializedRequest from .interfaces.serialized.text import TextSerializedResponse from .req_schema import UnwrappedRequest -from .router import Router +from .router import Router, Route from .types import HandlerType, InternalHandlerType, ContentType from .internal_types import Scope, Receive, Send, MethodType, QTYPE, BTYPE, PTYPE from breakshaft.convertor import ConvRepo @@ -26,6 +26,9 @@ class ASGIApp(Protocol): def route(self, method: MethodType, path_pattern: str): raise RuntimeError('stub!') + def add_subroute(self, subr: Route | Router, basepath: str) -> None: + self.router.add_subroute(subr, basepath) + class HTTPApp(ASGIApp): serialize_selector: SerializeSelector diff --git a/src/turbosloth/router.py b/src/turbosloth/router.py index 4cd0922..e5051be 100644 --- a/src/turbosloth/router.py +++ b/src/turbosloth/router.py @@ -177,7 +177,7 @@ class Router: raise NotFoundException(path or '/') return h - def add_subroute(self, basepath: str, subr: Route | Router): + def add_subroute(self, subr: Route | Router, basepath: str): if isinstance(subr, Router): subr = subr._root diff --git a/tests/test_router.py b/tests/test_router.py index 9af2bfd..62c6269 100644 --- a/tests/test_router.py +++ b/tests/test_router.py @@ -93,18 +93,18 @@ def test_subroutes(): r1.add('GET', '/asdf', f) r2.add('GET', '/asdf/a', d) - r1.add_subroute('', r2) + r1.add_subroute(r2, '') assert r1.match('GET', '/asdf') == ({}, f) assert r1.match('GET', '/asdf/a') == ({}, d) - r1.add_subroute('/asdf', r2) + r1.add_subroute(r2, '/asdf') assert r1.match('GET', '/asdf/asdf/a') == ({}, d) - r1.add_subroute('/asdf' * 5, r2) + r1.add_subroute(r2, '/asdf' * 5) assert r1.match('GET', '/asdf' * 5 + '/asdf/a') == ({}, d) with pytest.raises(NotFoundException): r1.match('GET', '/asdf/' * 5 + '/asdf/a') - r1.add_subroute('/asdf/' * 5, r2) + r1.add_subroute(r2, '/asdf/' * 5) assert r1.match('GET', '/asdf/' * 5 + '/asdf/a') == ({}, d)