update codebase

This commit is contained in:
2025-04-17 10:57:57 +02:00
parent e685c7b930
commit 759c01380f
37 changed files with 378 additions and 252 deletions

View File

@@ -3,6 +3,14 @@ from komgapi.errors import KomgaError, LoginError, ResultErrror
from typing import Any, Union
from limit import limit
import loguru
import sys
log = loguru.logger
log.remove()
log.add("logs/komga_api.log", rotation="1 week", retention="1 month")
log.add(sys.stdout, level="INFO")
class BaseAPI:
def __init__(self, username, password, url, timeout=20, api_version=1) -> None:
@@ -39,15 +47,16 @@ class BaseAPI:
if params is None:
params = {}
try:
# ic(url, params)
response = requests.get(
url,
auth=(self._username, self._password),
params=params,
timeout=self.timeout,
)
response.raise_for_status()
if response.status_code != 200:
self.getRequest(url, params)
# print(response.content)
log.debug(f"Response: {response.content}")
return response.json()
except ConnectionError as e:
message = f"Connection Error: {e}"
@@ -55,22 +64,37 @@ class BaseAPI:
except requests.exceptions.Timeout as e:
raise KomgaError(f"Timeout Error: {e}") from e
def postRequest(self, url, data: Union[dict, None] = None):
def postRequest(self, url, data: Union[dict, None] = None, body: dict = None):
if data is None:
data = {}
try:
response = requests.post(
url,
auth=(self._username, self._password),
json=data,
timeout=self.timeout,
)
if body is not None:
response = requests.post(
url,
auth=(self._username, self._password),
json=body,
params=data,
timeout=self.timeout,
)
else:
response = requests.post(
url,
auth=(self._username, self._password),
json=data,
timeout=self.timeout,
params=data,
)
response.raise_for_status()
status_code = response.status_code
if status_code != 202:
raise ResultErrror(f"Result Error: {response.json()}")
if status_code == 202:
log.debug(f"Response: {response}")
# raise ResultErrror(f"Result Error: {response}")
elif status_code == 200:
log.debug(f"Response: {response}")
return response.json()
else:
log.debug(f"Response: {response}")
raise ResultErrror(f"Result Error: {response.content}")
except ConnectionError as e:
message = f"Connection Error: {e}"
raise KomgaError(message) from e
@@ -81,6 +105,7 @@ class BaseAPI:
if data is None:
data = {}
try:
print("patching data", data, url)
response = requests.patch(
url,
auth=(self._username, self._password),
@@ -88,6 +113,10 @@ class BaseAPI:
timeout=self.timeout,
)
response.raise_for_status()
log.debug(
f"Response: {response}, {response.status_code}, {response.content}"
)
print(response.status_code, response.content)
if response.status_code != 204:
raise ResultErrror(f"Result Error: {response.json()}")
except ConnectionError as e: