GitHub Organization의 private 리포지토리 목록 가져 오기

조금 그런 일이 있었기 때문에 비망록을 남깁니다 📝

ASP.NET Core의 TargetFramework는 netcoreapp2.2입니다.

Refit 설치
dotnet add package refit

API 정의
namespace GitRepo.Interfaces
{
    [Headers(
        "User-Agent: GitRepo/0.1",
        "Accept: application/vnd.github.v3+json",
        "Authorization: token"
    )]
    public interface IGitHubApi
    {
        [Get("/orgs/{org}/repos")]
        Task<FoundRepos[]> ListOrgRepos(string org, string page);
    }
}

참고 : User-Agent는 필수 항목입니다. 그렇지 않으면 403 오류가 발생했습니다.

모델 정의
namespace GitRepo.Models
{
    public class FoundRepos
    {
        public string name { get; set; }
        public string full_name { get; set; }
    }
}

Organization의 private 리포지토리 목록을 가져옵니다.
    var api = RestService.For<IGitHubApi>("https://api.github.com", new RefitSettings
    {
        AuthorizationHeaderValueGetter = () => Task.FromResult("TOKEN"),
    });

    var allRepos = new List<FoundRepos>();
    for (int page = 1; ; page++)
    {
        var reposList = await api.ListOrgRepos(
            org: "ORGNAME",
            page: page.ToString()
        );
        if (reposList.Length == 0)
        {
            break;
        }
        allRepos.AddRange(reposList);
    }

TOKEN은 Edit personal access token에서 구하십시오.

private 리포지토리 목록에 필요한 scope는 repo입니다.



이번 포인트는 반복 취득이 필요한 점입니다 (페이지 네이션 되어 있으므로)

좋은 웹페이지 즐겨찾기