"""Services module.""" from github import Github from github.Repository import Repository from github.Commit import Commit class SearchService: """Search service performs search on Github.""" def __init__(self, github_client: Github): self._github_client = github_client def search_repositories(self, query, limit): """Search for repositories and return formatted data.""" repositories = self._github_client.search_repositories( query=query, **{"in": "name"}, ) return [ self._format_repo(repository) for repository in repositories[:limit] ] def _format_repo(self, repository: Repository): commits = repository.get_commits() return { "url": repository.html_url, "name": repository.name, "owner": { "login": repository.owner.login, "url": repository.owner.html_url, "avatar_url": repository.owner.avatar_url, }, "latest_commit": self._format_commit(commits[0]) if commits else {}, } def _format_commit(self, commit: Commit): return { "sha": commit.sha, "url": commit.html_url, "message": commit.commit.message, "author_name": commit.commit.author.name, }