Skip to content

Commit 662df12

Browse files
committed
refactor: reduce raw dict usage
1 parent f476610 commit 662df12

File tree

2 files changed

+30
-21
lines changed

2 files changed

+30
-21
lines changed

bunkrr_uploader/api/api.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from pathlib import Path
55

66
import aiofiles
7-
from aiohttp import ClientSession, FormData
7+
from aiohttp import ClientResponse, ClientSession, FormData
88
from yarl import URL
99

1010
from bunkrr_uploader.api.files import FileInfo
@@ -19,6 +19,8 @@
1919

2020
logger = logging.getLogger("bunkr-uploader")
2121

22+
API_ENTRYPOINT = URL("https://dash.bunkr.cr/api/")
23+
2224
DEFAULT_HEADERS = {
2325
"Accept": "application/json, text/plain, */*",
2426
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0",
@@ -32,14 +34,18 @@
3234
}
3335

3436

37+
def _log_resp(resp: ClientResponse, response: dict) -> None:
38+
record = {"url": str(resp.url), "headers": dict(resp.headers), "response": response}
39+
logger.debug(f"response: \n {json.dumps(record, indent=4)}")
40+
41+
3542
class BunkrrAPI:
3643
RATE_LIMIT = 50
3744

3845
def __init__(self, token: str, chunk_size: int | None = None):
3946
self._token = token
40-
self._api_entrypoint = URL("https://dash.bunkr.cr/api/")
4147
self._session_headers = DEFAULT_HEADERS | {"token": self._token}
42-
self._session = ClientSession(self._api_entrypoint, headers=self._session_headers)
48+
self._session = ClientSession(API_ENTRYPOINT, headers=self._session_headers)
4349
self._chunk_size: int = chunk_size or 0
4450
self._info = None
4551
self._semaphore = asyncio.Semaphore(self.RATE_LIMIT)
@@ -57,12 +63,13 @@ async def _get_json(self, path: str) -> dict:
5763
async with self._semaphore, self._session.get(path) as resp:
5864
resp.raise_for_status()
5965
response: dict = await resp.json()
60-
record = {"url": str(resp.url), "headers": dict(resp.headers), "response": response}
61-
logger.debug(f"response: \n {json.dumps(record, indent=4, ensure_ascii=False)}")
66+
_log_resp(resp, response)
6267
return response
6368

64-
async def _post(self, path: str, *, data: FormData | dict | None = None, server: URL | None = None) -> dict:
65-
data = data or {}
69+
async def _post(
70+
self, path: str, *, data: FormData | dict | None = None, server: URL | None = None, **kwargs
71+
) -> dict:
72+
data = data or kwargs
6673
if isinstance(data, dict) and "finishchunks" not in path:
6774
data["token"] = data.get("token") or self._token
6875

@@ -76,8 +83,7 @@ async def _post(self, path: str, *, data: FormData | dict | None = None, server:
7683
async with self._semaphore, session.post(path, data=data, headers=headers) as resp:
7784
resp.raise_for_status()
7885
response = await resp.json()
79-
record = {"url": str(resp.url), "headers": dict(resp.headers), "response": response}
80-
logger.debug(f"response: \n {json.dumps(record, indent=4)}")
86+
_log_resp(resp, response)
8187
return response
8288

8389
async def startup(self):
@@ -109,7 +115,7 @@ async def get_node(self) -> NodeResponse:
109115
return NodeResponse(**response)
110116

111117
async def verify_token(self, *, token: str | None = None) -> VerifyTokenResponse:
112-
response = await self._post("tokens/verify", data={"token": token})
118+
response = await self._post("tokens/verify", token=token)
113119
return VerifyTokenResponse(**response)
114120

115121
async def get_albums(self) -> AlbumsResponse:
@@ -124,8 +130,7 @@ async def create_album(
124130
public: bool = True,
125131
download: bool = True,
126132
) -> CreateAlbumResponse:
127-
data = {"name": name, "description": description, "public": public, "download": download}
128-
response = await self._post("albums", data=data)
133+
response = await self._post("albums", name=name, description=description, public=public, download=download)
129134
return CreateAlbumResponse(**response)
130135

131136
async def upload(self, file: FileInfo | Path, server: URL, album_id: str | None = None) -> UploadResponse:

bunkrr_uploader/api/files.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import mimetypes
55
from dataclasses import dataclass, field
66
from hashlib import md5
7-
from typing import TYPE_CHECKING
7+
from typing import TYPE_CHECKING, Any
88
from uuid import uuid4
99

1010
from .responses import UploadItemResponse
@@ -13,6 +13,10 @@
1313
from pathlib import Path
1414

1515

16+
def _dict(**kwargs: Any) -> dict[str, Any]:
17+
return kwargs
18+
19+
1620
@dataclass(frozen=True)
1721
class ChunkInfo:
1822
data: bytes
@@ -48,14 +52,14 @@ def __post_init__(self):
4852
self.uuid = str(uuid4())
4953

5054
def dump_json(self) -> dict:
51-
return {
52-
"uuid": self.uuid,
53-
"original": self.original_name,
54-
"type": self.mimetype,
55-
"albumid": self.album_id or None,
56-
"filelength": None,
57-
"age": None,
58-
}
55+
return _dict(
56+
uuid=self.uuid,
57+
original=self.original_name,
58+
type=self.mimetype,
59+
albumid=self.album_id or None,
60+
filelength=None,
61+
age=None,
62+
)
5963

6064
@property
6165
def as_item(self):

0 commit comments

Comments
 (0)