Skip to content

Commit 8ef985a

Browse files
committed
chore(http client): AbstractClientInterface
1 parent 076336c commit 8ef985a

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

src/graia/amnesia/builtins/aiohttp.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838

3939
from graia.amnesia.json import Json, TJson
4040
from graia.amnesia.transport import Transport
41-
from graia.amnesia.transport.common.http import AbstractServerRequestIO
41+
from graia.amnesia.transport.common.http import (
42+
AbstractClientInterface,
43+
AbstractServerRequestIO,
44+
)
4245
from graia.amnesia.transport.common.http import HttpEndpoint as HttpEndpoint
4346
from graia.amnesia.transport.common.http.extra import HttpRequest, HttpResponse
4447
from graia.amnesia.transport.common.http.io import AbstractClientRequestIO
@@ -96,7 +99,7 @@ def __init__(self, rider: ClientConnectionRider) -> None:
9699
self.response = rider.response
97100

98101
async def read(self) -> bytes:
99-
data=await self.response.read()
102+
data = await self.response.read()
100103
if self.rider.status.connected and not self.rider.status.drop:
101104
self.close()
102105
return data
@@ -297,7 +300,7 @@ def use(self, transport: Transport):
297300
return self.task
298301

299302

300-
class AiohttpClientInterface(ExportInterface["AiohttpService"]):
303+
class AiohttpClientInterface(AbstractClientInterface["AiohttpService"]):
301304
service: AiohttpService
302305

303306
def __init__(self, service: AiohttpService) -> None:

src/graia/amnesia/transport/common/http/__init__.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
1+
from abc import ABCMeta, abstractmethod
12
from dataclasses import dataclass, field
2-
from typing import Callable, Coroutine, List, Literal
3+
from typing import Any, Callable, Coroutine, List, Literal, Optional
34

5+
from launart.service import ExportInterface, TService
6+
7+
from graia.amnesia.json import TJson
48
from graia.amnesia.transport.common.http.io import AbstractServerRequestIO
59
from graia.amnesia.transport.common.http.responses import T_HttpResponse
10+
from graia.amnesia.transport.rider import TransportRider
611
from graia.amnesia.transport.signature import TransportSignature
712

813

@@ -20,3 +25,28 @@ class HttpEndpoint(
2025

2126
def __hash__(self) -> int:
2227
return hash(self.path) + hash(id(self.methods))
28+
29+
30+
class AbstractClientInterface(ExportInterface[TService], metaclass=ABCMeta):
31+
@abstractmethod
32+
def __init__(self, service: TService) -> None:
33+
raise NotImplementedError
34+
35+
@abstractmethod
36+
def request(
37+
self,
38+
method: str,
39+
url: str,
40+
params: Optional[dict] = None,
41+
data: Optional[Any] = None,
42+
headers: Optional[dict] = None,
43+
cookies: Optional[dict] = None,
44+
timeout: Optional[float] = None,
45+
*,
46+
json: Optional[TJson] = None,
47+
**kwargs: Any,
48+
) -> TransportRider:
49+
raise NotImplementedError
50+
51+
def websocket(self, url: str, **kwargs) -> TransportRider:
52+
raise NotImplementedError

0 commit comments

Comments
 (0)