@@ -257,7 +257,7 @@ def __init__(self, credentials: Union[IdPass, Pat], *, endpoint_url: str = DEFAU
257
257
self .url_prefix = f"{ endpoint_url } /api/v1"
258
258
self .session = requests .Session ()
259
259
260
- self .tokens : Union [Tokens , Pat , None ] = None if isinstance ( credentials , IdPass ) else credentials
260
+ self .tokens : Union [Tokens , Pat , None ] = None
261
261
262
262
self .cookies : Optional [RequestsCookieJar ] = None
263
263
@@ -497,6 +497,12 @@ def _request_wrapper(
497
497
else :
498
498
url = f"{ self .url_prefix } { url_path } "
499
499
500
+ # patを使う場合は最初にtokensをセットする
501
+ # def logoutの呼び出しでtokensがNoneになった後にAPIを呼び出しても問題ないように(IdPassの場合も、自動loginしているので、その代わり)
502
+ # IdPassと同じ処理に合流させてしまうと、patが無効なときに無限ループしてしまうので、ここで1回だけ呼び出す
503
+ if self .tokens is None and isinstance (self .credentials , Pat ):
504
+ self ._login_pat (self .credentials )
505
+
500
506
kwargs = self ._create_kwargs (query_params , header_params , request_body )
501
507
response = self .session .request (method = http_method .lower (), url = url , ** kwargs )
502
508
# response.requestよりメソッド引数のrequest情報の方が分かりやすいので、メソッド引数のrequest情報を出力する。
@@ -674,13 +680,13 @@ def login(self, mfa_code: Optional[str] = None) -> None:
674
680
MfaEnabledUserExecutionError: ``self.input_mfa_code_via_stdin`` が ``False`` AND ``mfa_code`` が未指定の場合
675
681
"""
676
682
if isinstance (self .credentials , IdPass ):
677
- self ._login (self .credentials , mfa_code )
683
+ self ._login_id_pass (self .credentials , mfa_code )
678
684
elif isinstance (self .credentials , Pat ):
679
- self .tokens = self .credentials
685
+ self ._login_pat ( self .credentials )
680
686
else :
681
687
assert_noreturn (self .credentials )
682
688
683
- def _login (self , id_pass : IdPass , mfa_code : Optional [str ] = None ) -> None :
689
+ def _login_id_pass (self , id_pass : IdPass , mfa_code : Optional [str ] = None ) -> None :
684
690
login_info = {"user_id" : id_pass .user_id , "password" : id_pass .password }
685
691
686
692
url = f"{ self .url_prefix } /login"
@@ -704,6 +710,9 @@ def _login(self, id_pass: IdPass, mfa_code: Optional[str] = None) -> None:
704
710
self .tokens = Tokens .from_dict (token_dict )
705
711
logger .debug ("Logged in successfully. user_id = %s" , id_pass .user_id )
706
712
713
+ def _login_pat (self , pat : Pat ) -> None :
714
+ self .tokens = pat
715
+
707
716
def logout (self ) -> None :
708
717
"""
709
718
ログアウトします。
0 commit comments