def list_repos(settings: Settings) -> Dict[str, str]: repos = github_api.get_all( f'https://api.github.com/orgs/{settings.org}/repos?per_page=100', headers={'Authorization': f'token {settings.api_key}'}, ) return github_api.filter_repos( repos, forks=settings.forks, private=settings.private, collaborator=settings.collaborator, )
def list_repos(settings: Settings) -> Dict[str, str]: repos = github_api.get_all( f'{settings.base_url}/user/repos?per_page=100', headers={'Authorization': f'token {settings.api_key}'}, ) return github_api.filter_repos( repos, forks=settings.forks, private=settings.private, collaborator=settings.collaborator, archived=settings.archived, )
def test_get_all(mock_urlopen): mock_urlopen.side_effect = urlopen_side_effect({ 'https://example.com/api': FakeResponse( b'["page1_1", "page1_2"]', next_link='https://example.com/api?page=2', ), 'https://example.com/api?page=2': FakeResponse( b'["page2_1", "page2_2"]', next_link='https://example.com/api?page=3', ), 'https://example.com/api?page=3': FakeResponse( b'["page3_1"]', ), }) ret = get_all('https://example.com/api') assert ret == ['page1_1', 'page1_2', 'page2_1', 'page2_2', 'page3_1']
def list_repos(settings: Settings) -> Dict[str, str]: repos = [] to_search = [settings.repo] while to_search: slug = to_search.pop() res = github_api.get_all( f'{settings.base_url}/repos/{slug}/forks?per_page=100', headers={'Authorization': f'token {settings.api_key}'}, ) repos.extend(res) to_search.extend(repo['full_name'] for repo in res if repo['forks']) return github_api.filter_repos( repos, forks=settings.forks, private=settings.private, collaborator=settings.collaborator, archived=settings.archived, )