-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathinterface.py
More file actions
56 lines (41 loc) · 1.6 KB
/
Copy pathinterface.py
File metadata and controls
56 lines (41 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import typing as t
from abc import ABC, ABCMeta, abstractmethod
from ellar.core.connection import HTTPConnection, Request, WebSocket
from ellar.core.response import Response
if t.TYPE_CHECKING: # pragma: no cover
from ellar.core import ControllerBase
from ellar.core.main import App
from ellar.core.routing import RouteOperationBase
from ellar.di.injector import RequestServiceProvider
class ExecutionContextException(Exception):
pass
class IExecutionContext(ABC, metaclass=ABCMeta):
@abstractmethod
def set_operation(self, operation: t.Optional["RouteOperationBase"] = None) -> None:
"""re-inits operation handler"""
@property
@abstractmethod
def has_response(self) -> bool:
"""checks if response was requested before send"""
@abstractmethod
def get_service_provider(self) -> "RequestServiceProvider":
"""Gets RequestServiceProvider instance"""
@abstractmethod
def switch_to_request(self) -> Request:
"""Returns Request instance"""
@abstractmethod
def switch_to_http_connection(self) -> HTTPConnection:
"""Returns HTTPConnection instance"""
@abstractmethod
def switch_to_websocket(self) -> WebSocket:
"""Returns WebSocket instance"""
@abstractmethod
def get_response(self) -> Response:
"""Gets response"""
@abstractmethod
def get_app(self) -> "App":
"""Gets application instance"""
def get_handler(self) -> t.Callable:
"""Gets operation handler"""
def get_class(self) -> t.Optional[t.Type["ControllerBase"]]:
"""Gets operation handler class"""