@@ -37,62 +37,6 @@ def unix_route(
37
37
38
38
else :
39
39
40
- class Router :
41
- """WebSocket router supporting :func:`route`."""
42
-
43
- def __init__ (
44
- self ,
45
- url_map : Map ,
46
- server_name : str | None = None ,
47
- url_scheme : str = "ws" ,
48
- ) -> None :
49
- self .url_map = url_map
50
- self .server_name = server_name
51
- self .url_scheme = url_scheme
52
- for rule in self .url_map .iter_rules ():
53
- rule .websocket = True
54
-
55
- def get_server_name (
56
- self , connection : ServerConnection , request : Request
57
- ) -> str :
58
- if self .server_name is None :
59
- return request .headers ["Host" ]
60
- else :
61
- return self .server_name
62
-
63
- def redirect (self , connection : ServerConnection , url : str ) -> Response :
64
- response = connection .respond (http .HTTPStatus .FOUND , f"Found at { url } " )
65
- response .headers ["Location" ] = url
66
- return response
67
-
68
- def not_found (self , connection : ServerConnection ) -> Response :
69
- return connection .respond (http .HTTPStatus .NOT_FOUND , "Not Found" )
70
-
71
- def route_request (
72
- self , connection : ServerConnection , request : Request
73
- ) -> Response | None :
74
- """Route incoming request."""
75
- url_map_adapter = self .url_map .bind (
76
- server_name = self .get_server_name (connection , request ),
77
- url_scheme = self .url_scheme ,
78
- )
79
- try :
80
- parsed = urllib .parse .urlparse (request .path )
81
- handler , kwargs = url_map_adapter .match (
82
- path_info = parsed .path ,
83
- query_args = parsed .query ,
84
- )
85
- except RequestRedirect as redirect :
86
- return self .redirect (connection , redirect .new_url )
87
- except NotFound :
88
- return self .not_found (connection )
89
- connection .handler , connection .handler_kwargs = handler , kwargs
90
- return None
91
-
92
- def handler (self , connection : ServerConnection ) -> None :
93
- """Handle a connection."""
94
- return connection .handler (connection , ** connection .handler_kwargs )
95
-
96
40
def route (
97
41
url_map : Map ,
98
42
* args : Any ,
@@ -212,3 +156,58 @@ def unix_route(
212
156
213
157
"""
214
158
return route (url_map , unix = True , path = path , ** kwargs )
159
+
160
+
161
+ class Router :
162
+ """WebSocket router supporting :func:`route`."""
163
+
164
+ def __init__ (
165
+ self ,
166
+ url_map : Map ,
167
+ server_name : str | None = None ,
168
+ url_scheme : str = "ws" ,
169
+ ) -> None :
170
+ self .url_map = url_map
171
+ self .server_name = server_name
172
+ self .url_scheme = url_scheme
173
+ for rule in self .url_map .iter_rules ():
174
+ rule .websocket = True
175
+
176
+ def get_server_name (self , connection : ServerConnection , request : Request ) -> str :
177
+ if self .server_name is None :
178
+ return request .headers ["Host" ]
179
+ else :
180
+ return self .server_name
181
+
182
+ def redirect (self , connection : ServerConnection , url : str ) -> Response :
183
+ response = connection .respond (http .HTTPStatus .FOUND , f"Found at { url } " )
184
+ response .headers ["Location" ] = url
185
+ return response
186
+
187
+ def not_found (self , connection : ServerConnection ) -> Response :
188
+ return connection .respond (http .HTTPStatus .NOT_FOUND , "Not Found" )
189
+
190
+ def route_request (
191
+ self , connection : ServerConnection , request : Request
192
+ ) -> Response | None :
193
+ """Route incoming request."""
194
+ url_map_adapter = self .url_map .bind (
195
+ server_name = self .get_server_name (connection , request ),
196
+ url_scheme = self .url_scheme ,
197
+ )
198
+ try :
199
+ parsed = urllib .parse .urlparse (request .path )
200
+ handler , kwargs = url_map_adapter .match (
201
+ path_info = parsed .path ,
202
+ query_args = parsed .query ,
203
+ )
204
+ except RequestRedirect as redirect :
205
+ return self .redirect (connection , redirect .new_url )
206
+ except NotFound :
207
+ return self .not_found (connection )
208
+ connection .handler , connection .handler_kwargs = handler , kwargs
209
+ return None
210
+
211
+ def handler (self , connection : ServerConnection ) -> None :
212
+ """Handle a connection."""
213
+ return connection .handler (connection , ** connection .handler_kwargs )
0 commit comments