Skip to content

Commit 25060ba

Browse files
authored
Merge pull request #73 from ponytailer/simple-client-code
abstract client code
2 parents 6ade472 + 96c94e5 commit 25060ba

File tree

5 files changed

+18
-49
lines changed

5 files changed

+18
-49
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,11 @@ client.change_book(1, request_headers={"Authorization": "Bearer abcdefg"})
7070

7171
```
7272

73-
And see the examples to get more examples.
73+
And see the examples.
7474

75-
# change log
75+
76+
<details>
77+
<summary> Change Log </summary>
7678

7779
### v1.0.0: refactor all the code, to be simple. remove the group client.
7880

@@ -96,3 +98,4 @@ client_config = ClientConfig(
9698

9799

98100
```
101+
</details>

pydantic_client/clients/abstract_client.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any, Dict, Tuple
1+
from typing import Any, Dict
22

33
from pydantic_client.schema.client_config import ClientConfig
44
from pydantic_client.schema.http_request import HttpRequest
@@ -16,13 +16,16 @@ def get_session(self):
1616
def do_request(self, request: HttpRequest) -> Any:
1717
raise NotImplementedError
1818

19-
@staticmethod
20-
def parse_request(request: HttpRequest) -> Tuple[Dict, Dict]:
19+
def parse(self, request: HttpRequest) -> Dict[str, Any]:
2120
if request.data:
2221
data, json = request.data, None
2322
else:
2423
data, json = None, request.json_body
25-
return data, json
24+
headers = request.request_headers if request.request_headers \
25+
else self.config.headers
26+
url = self.base_url + request.url
27+
return dict(url=url, data=data, json=json, headers=headers,
28+
method=request.method, timeout=self.config.timeout)
2629

2730
@classmethod
2831
def from_toml(cls, toml_config: ClientConfig):

pydantic_client/clients/aiohttp.py

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,11 @@ def get_session(self) -> Callable[[], ClientSession]:
1616
return lambda: ClientSession() if not session else session()
1717

1818
async def do_request(self, request: HttpRequest) -> Any:
19-
data, json = self.parse_request(request)
20-
headers = request.request_headers if request.request_headers \
21-
else self.config.headers
22-
2319
session_factory = self.get_session()
2420
s = session_factory()
2521
async with s as session:
2622
try:
27-
req = session.request(
28-
url=self.base_url + request.url,
29-
method=request.method,
30-
json=json,
31-
data=data,
32-
headers=headers,
33-
timeout=self.config.timeout
34-
)
35-
23+
req = session.request(**self.parse(request))
3624
async with req as resp:
3725
resp.raise_for_status()
3826
if resp.status == 200:

pydantic_client/clients/httpx.py

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,13 @@ class HttpxClient(AbstractClient):
1313

1414
def get_session(self):
1515
session = super().get_session()
16-
if session and isinstance(session, AsyncClient):
17-
return session
18-
return AsyncClient(http2=self.config.http2)
16+
return session if isinstance(session, AsyncClient) \
17+
else AsyncClient(http2=self.config.http2)
1918

2019
async def do_request(self, request: HttpRequest) -> Any:
21-
data, json = self.parse_request(request)
22-
headers = request.request_headers if request.request_headers \
23-
else self.config.headers
24-
2520
async with self.get_session() as session:
2621
try:
27-
response = await session.request(
28-
url=self.base_url + request.url,
29-
method=request.method,
30-
json=json,
31-
data=data,
32-
headers=headers,
33-
timeout=self.config.timeout
34-
)
22+
response = await session.request(**self.parse(request))
3523
response.raise_for_status()
3624
if response.is_success:
3725
return response.json()

pydantic_client/clients/requests.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,10 @@ class RequestsClient(AbstractClient):
1414

1515
def get_session(self) -> Session:
1616
session = super().get_session()
17-
if session and isinstance(session, Session):
18-
return session
19-
return self.session
17+
return session if isinstance(session, Session) else self.session
2018

2119
def do_request(self, request: HttpRequest) -> Any:
22-
data, json = self.parse_request(request)
23-
headers = request.request_headers if request.request_headers \
24-
else self.config.headers
25-
2620
try:
27-
return self.get_session().request(
28-
url=self.base_url + request.url,
29-
method=request.method,
30-
json=json,
31-
data=data,
32-
headers=headers,
33-
timeout=self.config.timeout,
34-
).json()
21+
return self.get_session().request(**self.parse(request)).json()
3522
except BaseException as e:
3623
raise e

0 commit comments

Comments
 (0)