17
17
class AnnofabApi2 (AbstractAnnofabApi2 ):
18
18
"""
19
19
Web API v2に対応したメソッドが存在するクラス。
20
+ 【注意】 開発途上版のため、互換性のない変更がある可能性があります。
20
21
"""
21
22
22
23
def __init__ (self , api : AnnofabApi ):
@@ -31,20 +32,12 @@ def __init__(self, api: AnnofabApi):
31
32
#: アクセスするURL
32
33
URL_PREFIX = "https://annofab.com/api/v2"
33
34
35
+ #: Signed Cookie情報
34
36
cookies : Optional [Dict [str , Any ]] = None
35
37
36
38
#########################################
37
39
# Private Method
38
40
#########################################
39
- class __NoAuth (AuthBase ):
40
- """
41
- netrcの有無にかかわらず、authorizationヘッダを空にする
42
- http://docs.python-requests.org/en/master/user/advanced/#custom-authentication
43
- """
44
-
45
- def __call__ (self , req ):
46
- req .headers ['Authorization' ] = None
47
- return req
48
41
49
42
@annofabapi .api .my_backoff
50
43
def _request_wrapper (self ,
@@ -86,7 +79,6 @@ def _request_wrapper(self,
86
79
87
80
else :
88
81
kwargs .update ({"cookies" : self .cookies })
89
- kwargs .pop ("auth" , self .__NoAuth ())
90
82
91
83
# HTTP Requestを投げる
92
84
response : requests .Response = getattr (self .api .session ,
@@ -96,7 +88,8 @@ def _request_wrapper(self,
96
88
# CloudFrontから403 Errorが発生したとき
97
89
if response .status_code == requests .codes .forbidden and response .headers .get (
98
90
"server" ) == "CloudFront" :
99
- self .api .login ()
91
+
92
+ self ._get_signed_access_v2 (url_path )
100
93
return self ._request_wrapper (http_method , url_path ,
101
94
query_params , header_params ,
102
95
request_body )
@@ -109,11 +102,24 @@ def _request_wrapper(self,
109
102
content = self .api ._response_to_content (response )
110
103
return content , response
111
104
105
+ def _get_signed_access_v2 (self , url_path : str ):
106
+ query_params = {"url" : f"/api/v2{ url_path } " }
107
+ self .get_signed_access_v2 (query_params )
108
+
112
109
#########################################
113
110
# Public Method : Cache
114
111
#########################################
115
- def get_signed_access_v2 (self , query_params ) :
112
+ def get_signed_access_v2 (self , query_params : Dict [ str , Any ]) -> Tuple [ Dict [ str , Any ], requests . Response ] :
116
113
"""
114
+ Signed Cookieを取得して、インスタンスに保持する。
115
+
116
+ Args:
117
+ query_params (Dict[str, Any]): Query Parameters
118
+ url (str): アクセスするページのURL
119
+
120
+ Returns:
121
+ Tuple[SignedCookie, requests.Response]
122
+
117
123
"""
118
124
119
125
url_path = f'/sign-url'
0 commit comments