c#程序下载GitHub私有repo的例子

本文关键字:repo 私有 程序下载 GitHub | 更新日期: 2023-09-27 18:04:04

我看到GitHub repo的下载路径是

https://github.com/{username}/{reponame}/archive/{branchname}.zip
对于一个私有的repo,可以理解的是你需要提供凭据来下载repo,谁能提供一个c#的例子来说明如何提供一个HTTPS基本认证,这样我就可以用编程的方式下载repo了?

谢谢,

c#程序下载GitHub私有repo的例子

这是一个纯c#的方法:

var githubToken = "[token]";
var url = "https://github.com/[username]/[repository]/archive/[sha1|tag].zip";
var path = @"[local path]";
using (var client = new System.Net.Http.HttpClient())
{
    var credentials = string.Format(System.Globalization.CultureInfo.InvariantCulture, "{0}:", githubToken);
    credentials = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(credentials));
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", credentials);
    var contents = client.GetByteArrayAsync(url).Result;
    System.IO.File.WriteAllBytes(path, contents);
}

查看创建个人访问令牌的指南,然后运行以下命令:

var githubToken = "token";
var request = (HttpWebRequest)WebRequest.Create("https://api.github.com/repos/$OWNER/$REPO/contents/$PATH");
request.Headers.Add(HttpRequestHeader.Authorization, string.Concat("token ", githubToken));
request.Accept = "application/vnd.github.v3.raw";
request.UserAgent = "test app"; //user agent is required https://developer.github.com/v3/#user-agent-required
using (var response = request.GetResponse())
{
    var encoding = System.Text.ASCIIEncoding.UTF8;
    using (var reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
    {
        var fileContent = reader.ReadToEnd();
    }
}

with CURL:

curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG

其中$TOKEN是github配置文件上的API令牌,而不是用于与APIv3通信的oAuth2令牌。

$USER是令牌连接的用户帐户,不一定是repo所属的组织/其他用户。$USER的第二个实例是repo的用户/帐户。

$REPO是私有存储库的名称

$PKGTYPE是tarball或者zipball, $BRANCHorTAG是一个分支,比如master,或者是一个提交的标签名。

$USER的第一个实例必须有权访问属于$USER的第二个实例的repo。

我在任何地方都找不到这个文档,所以如果你想要更详细的内容,我也有一些关于它的文章。

我正在调查Okctokit。目前净。试一试吧。NuGet: Install-Package Octokit