@@ -33,12 +33,26 @@ def __init__(self, project_id: str, secret: str) -> None:
3333
3434
3535class SyncClient (ClientBase ):
36- def __init__ (self , project_id : str , secret : str ) -> None :
36+ def __init__ (
37+ self ,
38+ project_id : str ,
39+ secret : str ,
40+ session : Optional [requests .Session ] = None ,
41+ ) -> None :
3742 super ().__init__ (project_id , secret )
3843 self .auth = requests .auth .HTTPBasicAuth (project_id , secret )
44+ self .__session = session
45+
46+ @property
47+ def _session (self ) -> requests .Session :
48+ if self .__session is None :
49+ self .__session = requests .Session ()
50+ return self .__session
3951
4052 @classmethod
41- def _response_from_request (cls , r : requests .Response ) -> ResponseWithJson :
53+ def _response_from_request (
54+ cls , r : requests .Response
55+ ) -> ResponseWithJson [requests .Response ]:
4256 try :
4357 resp_json = r .json ()
4458 except Exception :
@@ -50,51 +64,53 @@ def get(
5064 url : str ,
5165 params : Optional [Dict [str , Any ]],
5266 headers : Optional [Dict [str , str ]] = None ,
53- ) -> ResponseWithJson :
67+ ) -> ResponseWithJson [ requests . Response ] :
5468 final_headers = self .headers .copy ()
5569 final_headers .update (headers or {})
56- resp = requests .get (url , params = params , headers = final_headers , auth = self .auth )
70+ resp = self ._session .get (
71+ url , params = params , headers = final_headers , auth = self .auth
72+ )
5773 return self ._response_from_request (resp )
5874
5975 def post (
6076 self ,
6177 url : str ,
6278 json : Optional [Dict [str , Any ]],
6379 headers : Optional [Dict [str , str ]] = None ,
64- ) -> ResponseWithJson :
80+ ) -> ResponseWithJson [ requests . Response ] :
6581 final_headers = self .headers .copy ()
6682 final_headers .update (headers or {})
67- resp = requests .post (url , json = json , headers = final_headers , auth = self .auth )
83+ resp = self . _session .post (url , json = json , headers = final_headers , auth = self .auth )
6884 return self ._response_from_request (resp )
6985
7086 def post_form (
7187 self ,
7288 url : str ,
7389 form : Optional [Dict [str , Any ]],
7490 headers : Optional [Dict [str , str ]] = None ,
75- ) -> ResponseWithJson :
91+ ) -> ResponseWithJson [ requests . Response ] :
7692 final_headers = self .headers .copy ()
7793 final_headers .update (headers or {})
78- resp = requests .post (url , data = form , headers = final_headers , auth = self .auth )
94+ resp = self . _session .post (url , data = form , headers = final_headers , auth = self .auth )
7995 return self ._response_from_request (resp )
8096
8197 def put (
8298 self ,
8399 url : str ,
84100 json : Optional [Dict [str , Any ]],
85101 headers : Optional [Dict [str , str ]] = None ,
86- ) -> ResponseWithJson :
102+ ) -> ResponseWithJson [ requests . Response ] :
87103 final_headers = self .headers .copy ()
88104 final_headers .update (headers or {})
89- resp = requests .put (url , json = json , headers = final_headers , auth = self .auth )
105+ resp = self . _session .put (url , json = json , headers = final_headers , auth = self .auth )
90106 return self ._response_from_request (resp )
91107
92108 def delete (
93109 self , url : str , headers : Optional [Dict [str , str ]] = None
94- ) -> ResponseWithJson :
110+ ) -> ResponseWithJson [ requests . Response ] :
95111 final_headers = self .headers .copy ()
96112 final_headers .update (headers or {})
97- resp = requests .delete (url , headers = final_headers , auth = self .auth )
113+ resp = self . _session .delete (url , headers = final_headers , auth = self .auth )
98114 return self ._response_from_request (resp )
99115
100116
@@ -133,20 +149,21 @@ def __del__(self) -> None:
133149 @classmethod
134150 async def _response_from_request (
135151 cls , r : aiohttp .ClientResponse
136- ) -> ResponseWithJson :
152+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
137153 try :
138154 resp_json = await r .json ()
139155 except Exception :
140156 resp_json = {}
141157 return ResponseWithJson (response = r , json = resp_json )
142158
159+ @classmethod
143160 async def _response_from_post_form_request (
144161 cls , r : aiohttp .ClientResponse
145- ) -> ResponseWithJson :
162+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
146163 try :
147164 content = await r .content .read ()
148165 resp_json = json .loads (content .decode ())
149- except Exception as e :
166+ except Exception :
150167 resp_json = {}
151168 return ResponseWithJson (response = r , json = resp_json )
152169
@@ -155,7 +172,7 @@ async def get(
155172 url : str ,
156173 params : Optional [Dict [str , Any ]],
157174 headers : Optional [Dict [str , str ]] = None ,
158- ) -> ResponseWithJson :
175+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
159176 final_headers = self .headers .copy ()
160177 final_headers .update (headers or {})
161178 resp = await self ._session .get (
@@ -168,7 +185,7 @@ async def post(
168185 url : str ,
169186 json : Optional [Dict [str , Any ]],
170187 headers : Optional [Dict [str , str ]] = None ,
171- ) -> ResponseWithJson :
188+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
172189 final_headers = self .headers .copy ()
173190 final_headers .update (headers or {})
174191 resp = await self ._session .post (
@@ -181,7 +198,7 @@ async def post_form(
181198 url : str ,
182199 form : Optional [Dict [str , Any ]],
183200 headers : Optional [Dict [str , str ]] = None ,
184- ) -> ResponseWithJson :
201+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
185202 final_headers = self .headers .copy ()
186203 final_headers .update (headers or {})
187204 resp = await self ._session .post (
@@ -194,7 +211,7 @@ async def put(
194211 url : str ,
195212 json : Optional [Dict [str , Any ]],
196213 headers : Optional [Dict [str , str ]] = None ,
197- ) -> ResponseWithJson :
214+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
198215 final_headers = self .headers .copy ()
199216 final_headers .update (headers or {})
200217 resp = await self ._session .put (
@@ -204,7 +221,7 @@ async def put(
204221
205222 async def delete (
206223 self , url : str , headers : Optional [Dict [str , str ]] = None
207- ) -> ResponseWithJson :
224+ ) -> ResponseWithJson [ aiohttp . ClientResponse ] :
208225 final_headers = self .headers .copy ()
209226 final_headers .update (headers or {})
210227 resp = await self ._session .delete (url , headers = final_headers , auth = self .auth )
0 commit comments