2424class Session :
2525
2626 host : str = API_HOST
27+ headers : DictStrAny = {}
2728 basic_auth : Tuple [str , str ]
2829 jwt_token : Optional [Jwt ] = None
29- session : requests .Session
3030
3131 def __init__ (self ):
32- self .session = requests .Session ()
33- self .session .headers .update (
34- {
35- 'X-Cuenca-Api-Version' : API_VERSION ,
36- 'User-Agent' : f'cuenca-python/{ CLIENT_VERSION } ' ,
37- }
38- )
32+ self .headers = {
33+ 'X-Cuenca-Api-Version' : API_VERSION ,
34+ 'User-Agent' : f'cuenca-python/{ CLIENT_VERSION } ' ,
35+ }
3936
4037 # basic auth
4138 api_key = os .getenv ('CUENCA_API_KEY' , '' )
@@ -75,10 +72,10 @@ def configure(
7572 self .jwt_token = Jwt .create (self )
7673
7774 if login_token :
78- self .session . headers ['X-Cuenca-LoginToken' ] = login_token
75+ self .headers ['X-Cuenca-LoginToken' ] = login_token
7976
8077 if session_token :
81- self .session . headers ['X-Cuenca-SessionId' ] = session_token
78+ self .headers ['X-Cuenca-SessionId' ] = session_token
8279
8380 def get (
8481 self , endpoint : str , params : ClientRequestParams = None
@@ -105,19 +102,22 @@ def request(
105102 data : OptionalDict = None ,
106103 ** kwargs ,
107104 ) -> bytes :
108- if self .jwt_token :
109- if self .jwt_token .is_expired :
110- self .jwt_token = Jwt .create (self )
111- self .session .headers ['X-Cuenca-Token' ] = self .jwt_token .token
112-
113- resp = self .session .request (
114- method = method ,
115- url = 'https://' + self .host + urljoin ('/' , endpoint ),
116- auth = self .auth ,
117- json = json .loads (JSONEncoder ().encode (data )),
118- params = params ,
119- ** kwargs ,
120- )
105+ resp = None
106+ with requests .Session () as session :
107+ session .headers = self .headers # type: ignore
108+ if self .jwt_token :
109+ if self .jwt_token .is_expired :
110+ self .jwt_token = Jwt .create (self )
111+ self .headers ['X-Cuenca-Token' ] = self .jwt_token .token
112+ session .headers = self .headers # type: ignore
113+ resp = session .request ( # type: ignore
114+ method = method ,
115+ url = 'https://' + self .host + urljoin ('/' , endpoint ),
116+ auth = self .auth ,
117+ json = json .loads (JSONEncoder ().encode (data )),
118+ params = params ,
119+ ** kwargs ,
120+ )
121121 self ._check_response (resp )
122122 return resp .content
123123
0 commit comments