Skip to content

Commit 0b61505

Browse files
authored
Update interface_wrapper.py
1 parent 2afc3de commit 0b61505

File tree

1 file changed

+0
-150
lines changed

1 file changed

+0
-150
lines changed

interface_wrapper.py

Lines changed: 0 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -97,156 +97,6 @@ def get_wiki_pages(self, repo: Repository) -> List[WikiPage]:
9797
"""Получить список wiki-страниц для репозитория."""
9898
pass
9999

100-
# Реализация для GitHub
101-
class GitHubRepoAPI(IRepositoryAPI):
102-
def __init__(self, client):
103-
self.client = client
104-
105-
def get_repository(self, id: str) -> Optional[Repository]:
106-
try:
107-
repo = self.client.get_repo(id)
108-
return Repository(repo.full_name, repo.name, repo.html_url)
109-
except Exception as e:
110-
logging.error(f"Failed to get repository {id} from GitHub: {e}")
111-
return None
112-
113-
def get_commits(self, repo: Repository) -> List[Commit]:
114-
try:
115-
commits = self.client.get_repo(repo.id).get_commits()
116-
return [
117-
Commit(
118-
c.sha,
119-
c.commit.message,
120-
Contributor(c.author.login if c.author else "unknown", c.commit.author.email),
121-
c.commit.author.date
122-
) for c in commits
123-
]
124-
except Exception as e:
125-
logging.error(f"Failed to get commits from GitHub for repo {repo.name}: {e}")
126-
return []
127-
128-
def get_contributors(self, repo: Repository) -> List[Contributor]:
129-
try:
130-
contributors = self.client.get_repo(repo.id).get_contributors()
131-
return [Contributor(c.login, c.email or "") for c in contributors]
132-
except Exception as e:
133-
logging.error(f"Failed to get contributors from GitHub for repo {repo.name}: {e}")
134-
return []
135-
136-
def get_issues(self, repo: Repository) -> List[Issue]:
137-
try:
138-
issues = self.client.get_repo(repo.id).get_issues(state='all')
139-
return [
140-
Issue(
141-
i.number,
142-
i.title,
143-
Contributor(i.user.login, i.user.email or ""),
144-
i.state
145-
) for i in issues
146-
]
147-
except Exception as e:
148-
logging.error(f"Failed to get issues from GitHub for repo {repo.name}: {e}")
149-
return []
150-
151-
def get_pull_requests(self, repo: Repository) -> List[PullRequest]:
152-
try:
153-
pulls = self.client.get_repo(repo.id).get_pulls(state='all')
154-
return [
155-
PullRequest(
156-
p.number,
157-
p.title,
158-
Contributor(p.user.login, p.user.email or ""),
159-
p.state
160-
) for p in pulls
161-
]
162-
except Exception as e:
163-
logging.error(f"Failed to get pull requests from GitHub for repo {repo.name}: {e}")
164-
return []
165-
166-
def get_wiki_pages(self, repo: Repository) -> List[WikiPage]:
167-
# GitHub API не поддерживает прямое получение wiki-страниц
168-
return []
169-
170-
# Реализация для Forgejo
171-
class ForgejoRepoAPI(IRepositoryAPI):
172-
def __init__(self, client):
173-
self.client = client
174-
175-
def get_repository(self, id: str) -> Optional[Repository]:
176-
try:
177-
owner, repo_name = id.split('/')
178-
repo = self.client.repo_get(owner, repo_name)
179-
return Repository(repo['id'], repo['name'], repo['html_url'])
180-
except Exception as e:
181-
logging.error(f"Failed to get repository {id} from Forgejo: {e}")
182-
return None
183-
184-
def get_commits(self, repo: Repository) -> List[Commit]:
185-
try:
186-
owner, repo_name = repo.id.split('/')
187-
commits = self.client.repo_list_commits(owner, repo_name)
188-
return [
189-
Commit(
190-
c['sha'],
191-
c['message'],
192-
Contributor(c['author']['username'], c['author']['email']),
193-
datetime.fromisoformat(c['date'])
194-
) for c in commits
195-
]
196-
except Exception as e:
197-
logging.error(f"Failed to get commits from Forgejo for repo {repo.name}: {e}")
198-
return []
199-
200-
def get_contributors(self, repo: Repository) -> List[Contributor]:
201-
try:
202-
owner, repo_name = repo.id.split('/')
203-
contributors = self.client.repo_list_contributors(owner, repo_name)
204-
return [Contributor(c['username'], c['email']) for c in contributors]
205-
except Exception as e:
206-
logging.error(f"Failed to get contributors from Forgejo for repo {repo.name}: {e}")
207-
return []
208-
209-
def get_issues(self, repo: Repository) -> List[Issue]:
210-
try:
211-
owner, repo_name = repo.id.split('/')
212-
issues = self.client.repo_list_issues(owner, repo_name)
213-
return [
214-
Issue(
215-
i['number'],
216-
i['title'],
217-
Contributor(i['user']['username'], i['user']['email']),
218-
i['state']
219-
) for i in issues
220-
]
221-
except Exception as e:
222-
logging.error(f"Failed to get issues from Forgejo for repo {repo.name}: {e}")
223-
return []
224-
225-
def get_pull_requests(self, repo: Repository) -> List[PullRequest]:
226-
try:
227-
owner, repo_name = repo.id.split('/')
228-
pulls = self.client.repo_list_pull_requests(owner, repo_name)
229-
return [
230-
PullRequest(
231-
p['number'],
232-
p['title'],
233-
Contributor(p['user']['username'], p['user']['email']),
234-
p['state']
235-
) for p in pulls
236-
]
237-
except Exception as e:
238-
logging.error(f"Failed to get pull requests from Forgejo for repo {repo.name}: {e}")
239-
return []
240-
241-
def get_wiki_pages(self, repo: Repository) -> List[WikiPage]:
242-
try:
243-
owner, repo_name = repo.id.split('/')
244-
wiki_pages = self.client.repo_list_wiki_pages(owner, repo_name)
245-
return [WikiPage(page['title'], page['content']) for page in wiki_pages]
246-
except Exception as e:
247-
logging.error(f"Failed to get wiki pages from Forgejo for repo {repo.name}: {e}")
248-
return []
249-
250100
# Фабрика для создания API
251101
class RepositoryFactory:
252102
@staticmethod

0 commit comments

Comments
 (0)