@@ -199,7 +199,7 @@ def _request_wrapper(
199
199
request_body : Optional [Any ] = None ,
200
200
) -> Tuple [Any , requests .Response ]:
201
201
"""
202
- HTTP Requestを投げて、Responseを返す。
202
+ HTTP Requestを投げて、Responseを返す。
203
203
204
204
Args:
205
205
http_method:
@@ -236,7 +236,9 @@ def _request_wrapper(
236
236
content = self ._response_to_content (response )
237
237
return content , response
238
238
239
- def _get_signed_cookie (self , project_id ) -> Tuple [Dict [str , Any ], requests .Response ]:
239
+ def _get_signed_cookie (
240
+ self , project_id , query_params : Optional [Dict [str , Any ]] = None
241
+ ) -> Tuple [Dict [str , Any ], requests .Response ]:
240
242
"""
241
243
アノテーション仕様の履歴情報を取得するために、非公開APIにアクセスする。
242
244
変更される可能性あり.
@@ -250,7 +252,7 @@ def _get_signed_cookie(self, project_id) -> Tuple[Dict[str, Any], requests.Respo
250
252
"""
251
253
url_path = f"/internal/projects/{ project_id } /sign-headers"
252
254
http_method = "GET"
253
- keyword_params : Dict [str , Any ] = {}
255
+ keyword_params : Dict [str , Any ] = {"query_params" : query_params }
254
256
return self ._request_wrapper (http_method , url_path , ** keyword_params )
255
257
256
258
def _request_get_with_cookie (self , project_id : str , url : str ) -> requests .Response :
@@ -265,23 +267,22 @@ def _request_get_with_cookie(self, project_id: str, url: str) -> requests.Respon
265
267
Response
266
268
267
269
"""
268
-
269
- def request (cookies ):
270
- kwargs = {"cookies" : cookies }
271
- return self .session .get (url , ** kwargs )
272
-
273
- if self .cookies is None :
274
- _ , r = self ._get_signed_cookie (project_id )
275
- self .cookies = r .cookies
276
-
277
- response = request (self .cookies )
270
+ # Sessionオブジェクトに保存されているCookieを利用して、URLにアクセスする
271
+ response = self .session .get (url )
278
272
279
273
# CloudFrontから403 Errorが発生したときは、別プロジェクトのcookieを渡している可能性があるので、
280
274
# Signed Cookieを発行して、再度リクエストを投げる
281
275
if response .status_code == requests .codes .forbidden and response .headers .get ("server" ) == "CloudFront" :
282
- _ , r = self ._get_signed_cookie (project_id )
283
- self .cookies = r .cookies
284
- response = request (self .cookies )
276
+ query_params = {}
277
+ if "/input_data_set/" in url :
278
+ query_params .update ({"resource" : "input_data_set" })
279
+ else :
280
+ query_params .update ({"resource" : "project" })
281
+
282
+ _ , r = self ._get_signed_cookie (project_id , query_params = query_params )
283
+ for cookie in r .cookies :
284
+ self .session .cookies .set_cookie (cookie )
285
+ response = self .session .get (url )
285
286
286
287
_log_error_response (logger , response )
287
288
_raise_for_status (response )
0 commit comments