首页 > 解决方案 > 使用 Ruby 中的 Octokit::Client 下载 GitHub 文件

问题描述

我正在尝试通过 Ruby 中的 Octokit::Client 从 GitHub 下载 XML 文件。这是一个危险文件,所以我可以通过 github.api 访问客户端。我有一些使用以下代码的东西:

listing = client.contents('erik-allen/RepoName', :path => 'Root/Path')
download = open(listing[0].download_url)

然后我可以毫无问题地调用Nokogiri::XML(download)和解析 XML。

但是,它之所以有效,是因为它是目录中的唯一文件。这也不像是做事的正确方式。

我尝试了其他几种方法:

download = client.contents('erik-allen/RepoName', :path => 'Root/Path/File.xml')

那返回了 aSawyer::Resource但我还没有找到从中获取任何数据的方法。我尝试了这些组合,.get.data.data都没有奏效。调用Base64.decode64()结果也没有产生任何结果。我怀疑我可能需要一个“接受”标头,但我不确定如何使用 Octokit::Client 来做到这一点。有没有人有什么建议。我会认为这将是一项常见任务,但我找不到任何例子。

标签: rubygithub-apioctokitdanger

解决方案


我最终能够弄清楚事情。上有一个content属性Sawyer::Resource可以提供 Base64 数据。所以最终的解决方案是:

contents = client.contents('erik-allen/RepoName', :path => 'Root/Path/File.xml')
download = Base64.decode64(contents.content)

然后我可以毫无问题地调用Nokogiri::XML(download)和解析 XML。


推荐阅读