summaryrefslogtreecommitdiff
path: root/gitlab/_backends/protocol.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/_backends/protocol.py')
-rw-r--r--gitlab/_backends/protocol.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/gitlab/_backends/protocol.py b/gitlab/_backends/protocol.py
new file mode 100644
index 0000000..f89740b
--- /dev/null
+++ b/gitlab/_backends/protocol.py
@@ -0,0 +1,34 @@
+import abc
+import sys
+from typing import Any, Dict, Optional, Union
+
+import requests
+from requests_toolbelt.multipart.encoder import MultipartEncoder # type: ignore
+
+if sys.version_info >= (3, 8):
+ from typing import Protocol
+else:
+ from typing_extensions import Protocol
+
+
+class BackendResponse(Protocol):
+ @abc.abstractmethod
+ def __init__(self, response: requests.Response) -> None:
+ ...
+
+
+class Backend(Protocol):
+ @abc.abstractmethod
+ def http_request(
+ self,
+ method: str,
+ url: str,
+ json: Optional[Union[Dict[str, Any], bytes]],
+ data: Optional[Union[Dict[str, Any], MultipartEncoder]],
+ params: Optional[Any],
+ timeout: Optional[float],
+ verify: Optional[Union[bool, str]],
+ stream: Optional[bool],
+ **kwargs: Any,
+ ) -> BackendResponse:
+ ...