aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/infini/register.py8
-rw-r--r--src/infini/router.py25
-rw-r--r--tests/test_core.py8
-rw-r--r--tests/test_handlers.py12
-rw-r--r--tests/test_interceptor.py4
5 files changed, 32 insertions, 25 deletions
diff --git a/src/infini/register.py b/src/infini/register.py
index 3be22343..391fcf63 100644
--- a/src/infini/register.py
+++ b/src/infini/register.py
@@ -1,6 +1,6 @@
from infini.input import Input
from infini.output import Output
-from infini.router import ContainsRouter, Router
+from infini.router import Contains, Router
from infini.typing import List, Dict, Any, Callable, RouterType
from functools import wraps
@@ -28,7 +28,7 @@ class Register:
self.pre_interceptors.append(
{
"priority": priority,
- "router": ContainsRouter(router)
+ "router": Contains(router)
if isinstance(router, str)
else router,
"handler": wrapper,
@@ -47,7 +47,7 @@ class Register:
self.handlers.append(
{
"priority": priority,
- "router": ContainsRouter(router)
+ "router": Contains(router)
if isinstance(router, str)
else router,
"handler": wrapper,
@@ -83,7 +83,7 @@ class Register:
self.interceptors.append(
{
"priority": priority,
- "router": ContainsRouter(router)
+ "router": Contains(router)
if isinstance(router, str)
else router,
"handler": wrapper,
diff --git a/src/infini/router.py b/src/infini/router.py
index 1174721e..4b781ad9 100644
--- a/src/infini/router.py
+++ b/src/infini/router.py
@@ -1,23 +1,30 @@
+from infini.typing import Sequence, List
+
+
class Router:
- sign: str
+ signs: List[str]
- def __init__(self, sign: str) -> None:
- self.sign = sign
+ def __init__(self, sign: str, alias: Sequence[str] = []) -> None:
+ self.signs = [sign]
+ self.signs.extend(alias)
def match(self, input: str) -> bool:
- return self.sign == input.strip()
+ return any([input == sign for sign in self.signs])
-class StartswithRouter(Router):
+class Startswith(Router):
def match(self, input: str) -> bool:
- return input.strip().startswith(self.sign)
+ input = input.strip()
+ return any([input.startswith(sign) for sign in self.signs])
-class ContainsRouter(Router):
+class Contains(Router):
def match(self, input: str) -> bool:
- return self.sign in input.strip()
+ input = input.strip()
+ return any([sign in input for sign in self.signs])
class Endswith(Router):
def match(self, input: str) -> bool:
- return input.strip().endswith(self.sign)
+ input = input.strip()
+ return any([input.endswith(sign) for sign in self.signs])
diff --git a/tests/test_core.py b/tests/test_core.py
index 01d7ecb4..11a8c57d 100644
--- a/tests/test_core.py
+++ b/tests/test_core.py
@@ -4,7 +4,7 @@ from infini.handler import Handler
from infini.input import Input
from infini.interceptor import Interceptor
from infini.output import Output
-from infini.router import ContainsRouter, StartswithRouter
+from infini.router import Contains, Startswith
def test_core():
@@ -20,7 +20,7 @@ def test_core():
interceptor.interceptors = [
{
"priority": 1,
- "router": ContainsRouter("简律纯"),
+ "router": Contains("简律纯"),
"handler": intercept_jianlvchun,
}
]
@@ -38,12 +38,12 @@ def test_core():
handler.handlers = [
{
"priority": 2,
- "router": StartswithRouter(".add"),
+ "router": Startswith(".add"),
"handler": add,
},
{
"priority": 1,
- "router": StartswithRouter("."),
+ "router": Startswith("."),
"handler": cmd,
},
]
diff --git a/tests/test_handlers.py b/tests/test_handlers.py
index 00bb6f84..ee96cdab 100644
--- a/tests/test_handlers.py
+++ b/tests/test_handlers.py
@@ -1,7 +1,7 @@
from infini.handler import Handler
from infini.input import Input
from infini.output import Output
-from infini.router import StartswithRouter
+from infini.router import Startswith
def test_handler():
@@ -22,12 +22,12 @@ def test_handler():
handler.handlers = [
{
"priority": 2,
- "router": StartswithRouter(".add"),
+ "router": Startswith(".add"),
"handler": add,
},
{
"priority": 1,
- "router": StartswithRouter("."),
+ "router": Startswith("."),
"handler": cmd,
},
]
@@ -56,12 +56,12 @@ def test_handler_block():
handler.handlers = [
{
"priority": 2,
- "router": StartswithRouter(".add"),
+ "router": Startswith(".add"),
"handler": add,
},
{
"priority": 1,
- "router": StartswithRouter("."),
+ "router": Startswith("."),
"handler": cmd,
},
]
@@ -88,7 +88,7 @@ def test_handler_interator():
handler.handlers = [
{
"priority": 1,
- "router": StartswithRouter(".add"),
+ "router": Startswith(".add"),
"handler": add,
},
]
diff --git a/tests/test_interceptor.py b/tests/test_interceptor.py
index afb135e9..ffb03d56 100644
--- a/tests/test_interceptor.py
+++ b/tests/test_interceptor.py
@@ -1,7 +1,7 @@
from infini.input import Input
from infini.interceptor import Interceptor
from infini.output import Output
-from infini.router import ContainsRouter
+from infini.router import Contains
def test_interceptor():
@@ -15,7 +15,7 @@ def test_interceptor():
interceptor.interceptors = [
{
"priority": 1,
- "router": ContainsRouter("简律纯"),
+ "router": Contains("简律纯"),
"handler": intercept,
}
]