首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Octokit.net从GitHub存储库下载最新版本

使用Octokit.net从GitHub存储库下载最新版本
EN

Stack Overflow用户
提问于 2021-02-08 22:25:36
回答 1查看 364关注 0票数 0

如何使用Octokit.net以压缩文件的形式以编程方式下载私有存储库的最新版本?

我不想下载整个存储库,只是下载指定版本的源代码,例如最新的版本。

到目前为止,我已经创建了一个使用GitHubToken授权的GitHubClient,并且我已经获得了存储库中所有版本的列表。我可以获得最新版本的信息,比如名称、标签、Url和ZipballUrl等。

我曾尝试使用ZipballUrl下载该版本,但它没有返回有效的压缩文件。

在下面的代码中,我尝试从Octokit存储库下载最新版本。

代码语言:javascript
复制
    String workspaceName = "octokit";
    String repositoryName = "octokit.net";
    String filename = "temp.zip";

    var client = new GitHubClient(new ProductHeaderValue(repositoryName));
    String GitHubToken = "--- token goes here ---";
    var tokenAuth = new Credentials(GitHubToken);
    client.Credentials = tokenAuth;
    
    // Retrieve a List of Releases in the Repository, and get latest using [0]-subscript
    var releases = await client.Repository.Release.GetAll(workspaceName, repositoryName);
    var latest = releases[0];

    // Get a HttpResponse from the Zipball URL, which is then converted to a byte array
    var response = await client.Connection.Get<object>(new Uri(latest.ZipballUrl), new Dictionary<string, string>(), "application/json");
    byte[] releaseBytes = Encoding.ASCII.GetBytes(response.HttpResponse.Body.ToString());

    // Create the resulting file using the byte array
    await File.WriteAllBytesAsync(filename, releaseBytes);

我不是很熟悉GitHubClient,也不是Http-或者WebClients,所以我不知道错误是出在HttpResponse和我从那里得到的内容上,还是在文件写入过程中的任何其他地方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-09 20:59:50

已解决:

我不能使用GitHubClient完全解决这个问题,所以我仍然有兴趣知道这是否可能。

然而,我设法解决了这个问题,在使用Octokit找到ZipballUrl之后,我添加了一个WebClient来负责下载。必须使用User-Agent和Authorization标头进行配置才能工作。

代码语言:javascript
复制
var latest = releases[0];
           
WebClient webClient = new WebClient();
webClient.Headers.Add("user-agent", "Anything");
webClient.Headers.Add("authorization", "token " + GitHubToken);
await webClient.DownloadFileTaskAsync(new Uri(latest.ZipballUrl), filename);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66103488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档