diff --git a/packages/toolbox-core/README.md b/packages/toolbox-core/README.md index c4461df3..0c440d91 100644 --- a/packages/toolbox-core/README.md +++ b/packages/toolbox-core/README.md @@ -463,6 +463,11 @@ async with ToolboxClient("http://127.0.0.1:5000") as toolbox: print(result) ``` +> [!NOTE] +> An auth token getter for a specific name (e.g., "GOOGLE_ID") will replace any +> client header with the same name followed by "_token" (e.g., +> "GOOGLE_ID_token"). + ## Binding Parameter Values The SDK allows you to pre-set, or "bind", values for specific tool parameters diff --git a/packages/toolbox-core/src/toolbox_core/tool.py b/packages/toolbox-core/src/toolbox_core/tool.py index 1545ded4..1d3c25e7 100644 --- a/packages/toolbox-core/src/toolbox_core/tool.py +++ b/packages/toolbox-core/src/toolbox_core/tool.py @@ -276,12 +276,14 @@ async def __call__(self, *args: Any, **kwargs: Any) -> str: # create headers for auth services headers = {} + for client_header_name, client_header_val in self.__client_headers.items(): + headers[client_header_name] = await resolve_value(client_header_val) + + # In case of conflict, override the client header by the auth token getter for auth_service, token_getter in self.__auth_service_token_getters.items(): headers[self.__get_auth_header(auth_service)] = await resolve_value( token_getter ) - for client_header_name, client_header_val in self.__client_headers.items(): - headers[client_header_name] = await resolve_value(client_header_val) async with self.__session.post( self.__url,