11import typing as t
22
3- from pydantic .error_wrappers import ErrorWrapper
43from pydantic .fields import Undefined
54from starlette .responses import Response
65
76from ellar .core .connection import HTTPConnection , Request , WebSocket
87from ellar .core .context import IExecutionContext
98from ellar .core .params import params
10- from ellar .core .params .resolvers import (
11- BaseRequestRouteParameterResolver ,
12- NonFieldRouteParameterResolver ,
13- ParameterInjectable ,
9+ from ellar .core .params .resolvers .non_parameter import (
10+ ConnectionParam ,
11+ ExecutionContextParameter ,
12+ HostRequestParam ,
13+ ProviderParameterInjector ,
14+ RequestParameter ,
15+ ResponseRequestParam ,
16+ SessionRequestParam ,
17+ WebSocketParameter ,
1418)
1519from ellar .types import T
1620
@@ -341,108 +345,44 @@ def WsBody(
341345 )
342346
343347
344- class _RequestParameter (NonFieldRouteParameterResolver ):
345- async def resolve (
346- self , ctx : IExecutionContext , ** kwargs : t .Any
347- ) -> t .Tuple [t .Dict , t .List ]:
348- try :
349- request = ctx .switch_to_http_connection ().get_request ()
350- return {self .parameter_name : request }, []
351- except Exception as ex :
352- return {}, [ErrorWrapper (ex , loc = self .parameter_name or "request" )]
353-
354-
355- class _WebSocketParameter (NonFieldRouteParameterResolver ):
356- async def resolve (
357- self , ctx : IExecutionContext , ** kwargs : t .Any
358- ) -> t .Tuple [t .Dict , t .List ]:
359- try :
360- websocket = ctx .switch_to_websocket ().get_client ()
361- return {self .parameter_name : websocket }, []
362- except Exception as ex :
363- return {}, [ErrorWrapper (ex , loc = self .parameter_name or "websocket" )]
364-
365-
366- class _ExecutionContextParameter (NonFieldRouteParameterResolver ):
367- async def resolve (
368- self , ctx : IExecutionContext , ** kwargs : t .Any
369- ) -> t .Tuple [t .Dict , t .List ]:
370- return {self .parameter_name : ctx }, []
371-
372-
373- class _HostRequestParam (BaseRequestRouteParameterResolver ):
374- lookup_connection_field = None
375-
376- async def get_value (self , ctx : IExecutionContext ) -> t .Any :
377- connection = ctx .switch_to_http_connection ().get_client ()
378- if connection .client :
379- return connection .client .host
380-
381-
382- class _SessionRequestParam (BaseRequestRouteParameterResolver ):
383- lookup_connection_field = "session"
384-
385-
386- class _ConnectionParam (NonFieldRouteParameterResolver ):
387- async def resolve (
388- self , ctx : IExecutionContext , ** kwargs : t .Any
389- ) -> t .Tuple [t .Dict , t .List ]:
390- try :
391- connection = ctx .switch_to_http_connection ().get_client ()
392- return {self .parameter_name : connection }, []
393- except Exception as ex :
394- return {}, [ErrorWrapper (ex , loc = self .parameter_name or "connection" )]
395-
396-
397- class _ResponseRequestParam (NonFieldRouteParameterResolver ):
398- async def resolve (
399- self , ctx : IExecutionContext , ** kwargs : t .Any
400- ) -> t .Tuple [t .Dict , t .List ]:
401- try :
402- response = ctx .switch_to_http_connection ().get_response ()
403- return {self .parameter_name : response }, []
404- except Exception as ex :
405- return {}, [ErrorWrapper (ex , loc = self .parameter_name or "response" )]
406-
407-
408348def Http () -> HTTPConnection :
409349 """
410350 Route Function Parameter for retrieving Current Request Instance
411351 :return: Request
412352 """
413- return t .cast (Request , _ConnectionParam ())
353+ return t .cast (Request , ConnectionParam ())
414354
415355
416356def Req () -> Request :
417357 """
418358 Route Function Parameter for retrieving Current Request Instance
419359 :return: Request
420360 """
421- return t .cast (Request , _RequestParameter ())
361+ return t .cast (Request , RequestParameter ())
422362
423363
424364def Ws () -> WebSocket :
425365 """
426366 Route Function Parameter for retrieving Current WebSocket Instance
427367 :return: WebSocket
428368 """
429- return t .cast (WebSocket , _WebSocketParameter ())
369+ return t .cast (WebSocket , WebSocketParameter ())
430370
431371
432372def Context () -> IExecutionContext :
433373 """
434374 Route Function Parameter for retrieving Current IExecutionContext Instance
435375 :return: IExecutionContext
436376 """
437- return t .cast (IExecutionContext , _ExecutionContextParameter ())
377+ return t .cast (IExecutionContext , ExecutionContextParameter ())
438378
439379
440380def Provide (service : t .Optional [t .Type [T ]] = None ) -> T :
441381 """
442382 Route Function Parameter for resolving registered Provider
443383 :return: T
444384 """
445- return t .cast (T , ParameterInjectable (service ))
385+ return t .cast (T , ProviderParameterInjector (service ))
446386
447387
448388def Session () -> t .Dict :
@@ -451,20 +391,20 @@ def Session() -> t.Dict:
451391 Ensure SessionMiddleware is registered to application middlewares
452392 :return: Dict
453393 """
454- return t .cast (t .Dict , _SessionRequestParam ())
394+ return t .cast (t .Dict , SessionRequestParam ())
455395
456396
457397def Host () -> str :
458398 """
459399 Route Function Parameter for resolving registered `HTTPConnection.client.host`
460400 :return: str
461401 """
462- return t .cast (str , _HostRequestParam ())
402+ return t .cast (str , HostRequestParam ())
463403
464404
465405def Res () -> Response :
466406 """
467407 Route Function Parameter for resolving registered Response
468408 :return: Response
469409 """
470- return t .cast (Response , _ResponseRequestParam ())
410+ return t .cast (Response , ResponseRequestParam ())
0 commit comments