22 RepositoryFactory ,
33 IRepositoryAPI
44)
5+ from GitHubRepoAPI import GitHubRepoAPI
56from time import sleep
67import requests
78
@@ -21,7 +22,14 @@ def get_tokens_from_file(tokens_path: str) -> list[str]:
2122 return tokens
2223
2324
24- class GitClients :
25+ def get_repos_from_file (repos_path : str ) -> list [str ]:
26+ with open (repos_path , 'r' ) as file :
27+ list_repos = [x for x in file .read ().split ('\n ' ) if x ]
28+
29+ return list_repos
30+
31+
32+ class Clients :
2533 def __init__ (self , source : str , tokens : list [str ], base_url : str | None = None ):
2634 self .clients = self ._init_clients (source , tokens , base_url )
2735 self .cur_client = None
@@ -54,38 +62,45 @@ def get_next_client(self) -> IRepositoryAPI:
5462 return client
5563
5664
57- def get_next_repo (clients : GitClients , repositories ):
65+ def get_next_repo (clients : Clients , repositories ):
5866 with open (repositories , 'r' ) as file :
5967 list_repos = [x for x in file .read ().split ('\n ' ) if x ]
60- print (list_repos )
6168 for repo_name in list_repos :
6269 try :
6370 cur_client = clients .get_next_client ()
6471 repo = cur_client ['client' ].get_repository (repo_name )
6572 except Exception as err :
6673 print (f'get_next_repo(): error { err } ' )
6774 print (f'get_next_repo(): failed to load repository "{ repo_name } "' )
68- exit (1 )
6975 else :
70- print (cur_client ['token' ])
71- yield repo , cur_client ['token' ]
76+ yield cur_client ['client' ], repo , cur_client ['token' ]
77+
78+
79+ def get_next_binded_repo (clients : Clients , repositories : list [str ]):
80+ for repo_name in repositories :
81+ try :
82+ cur_client = clients .get_next_client ()
83+ repo = cur_client ['client' ].get_repository (repo_name )
84+ except Exception as err :
85+ print (f'get_next_binded_repo(): error { err } ' )
86+ print (f'get_next_binded_repo(): failed to load repository "{ repo_name } "' )
87+ else :
88+ yield cur_client ['client' ], repo , cur_client ['token' ]
7289
7390
74- def get_assignee_story (git_object ):
91+ def get_assignee_story (git_object , client , token , repository ):
7592 assignee_result = ""
7693
7794 try :
78- repo_owner = git_object . repository .owner .username
79- repo_name = git_object . repository .name
80- issue_index = git_object .number # Для pull request и issue одинаково
95+ repo_owner = repository .owner .login
96+ repo_name = repository .name
97+ issue_index = git_object ._id # Для pull request и issue одинаково
8198
82- client = git_object ._client # доступ к api-клиенту
83- token = client .token
84- base_url = client .base_url .rstrip ('/' )
99+ base_url = client .get_base_url ().rstrip ('/' )
85100
86101 url = f"{ base_url } /repos/{ repo_owner } /{ repo_name } /issues/{ issue_index } /timeline"
87102 headers = {
88- "Authorization" : f"token { token } " ,
103+ "Authorization" : f"Bearer { token } " if client is GitHubRepoAPI else f" token { token } " ,
89104 "Accept" : "application/json"
90105 }
91106
0 commit comments