diff --git a/arangoasync/connection.py b/arangoasync/connection.py index 21fa756..5fa6363 100644 --- a/arangoasync/connection.py +++ b/arangoasync/connection.py @@ -163,13 +163,11 @@ def compress_request(self, request: Request) -> bool: async def process_request( self, request: Request, - skip_db_prefix: bool = False, ) -> Response: """Process request, potentially trying multiple hosts. Args: request (Request): Request object. - skip_db_prefix (bool): If `True`, do not prepend the database endpoint. Returns: Response: Response object. @@ -178,7 +176,7 @@ async def process_request( ConnectionAbortedError: If it can't connect to host(s) within limit. """ - if not skip_db_prefix: + if request.prefix_needed: request.endpoint = f"{self._db_endpoint}{request.endpoint}" host_index = self._host_resolver.get_host_index() for tries in range(self._host_resolver.max_tries): @@ -379,10 +377,11 @@ async def refresh_token(self) -> None: method=Method.POST, endpoint="/_open/auth", data=auth.encode("utf-8"), + prefix_needed=False, ) try: - resp = await self.process_request(request, skip_db_prefix=True) + resp = await self.process_request(request) except ClientConnectionAbortedError as e: raise JWTRefreshError(str(e)) from e except ServerConnectionError as e: diff --git a/arangoasync/database.py b/arangoasync/database.py index dbcc319..c188290 100644 --- a/arangoasync/database.py +++ b/arangoasync/database.py @@ -2022,7 +2022,9 @@ async def reload_jwt_secrets(self) -> Result[Json]: References: - `hot-reload-the-jwt-secrets-from-disk `__ """ # noqa: 501 - request = Request(method=Method.POST, endpoint="/_admin/server/jwt") + request = Request( + method=Method.POST, endpoint="/_admin/server/jwt", prefix_needed=False + ) def response_handler(resp: Response) -> Json: if not resp.is_success: diff --git a/arangoasync/request.py b/arangoasync/request.py index 951c9e9..6bd629d 100644 --- a/arangoasync/request.py +++ b/arangoasync/request.py @@ -33,6 +33,7 @@ class Request: params (dict | None): URL parameters. data (bytes | None): Request payload. auth (Auth | None): Authentication. + prefix_needed (bool): Whether the request needs a prefix (e.g., database name). Attributes: method (Method): HTTP method. @@ -41,6 +42,7 @@ class Request: params (dict | None): URL parameters. data (bytes | None): Request payload. auth (Auth | None): Authentication. + prefix_needed (bool): Whether the request needs a prefix (e.g., database name). """ __slots__ = ( @@ -50,6 +52,7 @@ class Request: "params", "data", "auth", + "prefix_needed", ) def __init__( @@ -60,6 +63,7 @@ def __init__( params: Optional[Params] = None, data: Optional[bytes | str] = None, auth: Optional[Auth] = None, + prefix_needed: bool = True, ) -> None: self.method: Method = method self.endpoint: str = endpoint @@ -67,6 +71,7 @@ def __init__( self.params: Params = params or dict() self.data: Optional[bytes | str] = data self.auth: Optional[Auth] = auth + self.prefix_needed = prefix_needed def normalized_headers(self) -> RequestHeaders: """Normalize request headers.