11import uuid
2+ import sys
23
34from httpx import Request
45from typing import Union
@@ -27,14 +28,14 @@ def before_request(self, hook_ctx: BeforeRequestContext, request: Request) -> Un
2728 :param request: The HTTP request to modify.
2829 :return: The modified request or an exception.
2930 """
30- idempotency_key = "idempotency-key"
31-
3231 # Create a copy of the headers
3332 headers = dict (request .headers or {})
3433
3534 # Add the idempotency key if it doesn't already exist
36- if idempotency_key not in headers or not headers [idempotency_key ]:
37- headers [idempotency_key ] = generate_idempotency_key ()
35+ headers = self ._handle_idempotency_key (headers )
36+
37+ # Customize the User Agent header
38+ headers = self ._customize_user_agent (headers , hook_ctx )
3839
3940 return Request (
4041 method = request .method ,
@@ -43,3 +44,25 @@ def before_request(self, hook_ctx: BeforeRequestContext, request: Request) -> Un
4344 content = request .content ,
4445 extensions = request .extensions
4546 )
47+
48+ def _handle_idempotency_key (self , headers : dict ) -> dict :
49+ idempotency_key = "idempotency-key"
50+ if idempotency_key not in headers or not headers [idempotency_key ]:
51+ headers [idempotency_key ] = generate_idempotency_key ()
52+ return headers
53+
54+ def _customize_user_agent (self , headers : dict , hook_ctx : BeforeRequestContext ) -> dict :
55+ user_agent_key = "user-agent"
56+
57+ gen_version = hook_ctx .config .gen_version
58+ sdk_version = hook_ctx .config .sdk_version
59+ python_version = sys .version .split (" " , maxsplit = 1 )[0 ]
60+ package_name = "mollie-api-python-beta"
61+
62+ new_user_agent = f"Speakeasy/{ gen_version } Python/{ python_version } { package_name } /{ sdk_version } "
63+ if hook_ctx .config .globals .custom_user_agent :
64+ new_user_agent = f"{ new_user_agent } { hook_ctx .config .globals .custom_user_agent } "
65+
66+ headers [user_agent_key ] = new_user_agent
67+
68+ return headers
0 commit comments