@@ -77,7 +77,11 @@ class ApiClient:
7777 automatically discarded from the request
7878 - boolean values in `data` or `params` fields can be serialized to values that are suitable
7979 for the target API, like `"true"` or `"false"`, or `"1"` / `"0"`, instead of the default
80- values `"True"` or `"False"`.
80+ values `"True"` or `"False"`,
81+ - you may pass `cookies` and `headers`, which will be added to the session cookie handler or
82+ request headers respectively.
83+ - you may use the `user_agent` parameter to change the `User-Agent` header easily. Set it to
84+ `None` to remove that header.
8185
8286 `base_url` will serve as root for relative urls passed to
8387 [ApiClient.request()][requests_oauth2client.api_client.ApiClient.request],
@@ -125,7 +129,9 @@ class ApiClient:
125129 a boolean value (`True` or `False`) will be serialized to the corresponding value.
126130 This can be useful since some APIs expect a `'true'` or `'false'` value as boolean,
127131 and `requests` serializes `True` to `'True'` and `False` to `'False'`.
128- Set it to `None` to restore default requests behaviour.
132+ Set it to `None` to restore default requests behavior.
133+ cookies: a mapping of cookies to set in the underlying `requests.Session`.
134+ headers: a mapping of headers to set in the underlying `requests.Session`.
129135 session: a preconfigured `requests.Session` to use with this `ApiClient`.
130136 **session_kwargs: additional kwargs to configure the underlying `requests.Session`.
131137
@@ -151,10 +157,27 @@ def __init__(
151157 raise_for_status : bool = True ,
152158 none_fields : Literal ["include" , "exclude" , "empty" ] = "exclude" ,
153159 bool_fields : tuple [Any , Any ] | None = ("true" , "false" ),
160+ cookies : Mapping [str , Any ] | None = None ,
161+ headers : Mapping [str , Any ] | None = None ,
162+ user_agent : str | None = requests .utils .default_user_agent (),
154163 session : requests .Session | None = None ,
155164 ** session_kwargs : Any ,
156165 ) -> None :
157166 session = session or requests .Session ()
167+
168+ if cookies :
169+ for key , val in cookies .items ():
170+ session .cookies [key ] = str (val )
171+
172+ if headers :
173+ for key , val in headers .items ():
174+ session .headers [key ] = str (val )
175+
176+ if user_agent is None :
177+ session .headers .pop ("User-Agent" , None )
178+ else :
179+ session .headers ["User-Agent" ] = str (user_agent )
180+
158181 for key , val in session_kwargs .items ():
159182 setattr (session , key , val )
160183
0 commit comments