ruby - 使用 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 来做到这一点。有没有人有什么建议。我会认为这将是一项常见任务,但我找不到任何例子。
解决方案
我最终能够弄清楚事情。上有一个content
属性Sawyer::Resource
可以提供 Base64 数据。所以最终的解决方案是:
contents = client.contents('erik-allen/RepoName', :path => 'Root/Path/File.xml')
download = Base64.decode64(contents.content)
然后我可以毫无问题地调用Nokogiri::XML(download)
和解析 XML。
推荐阅读
- python - 合并具有重复键的数据框
- gremlin - Gremlin-python:如何使用用户定义的步骤来重用遍历逻辑
- asp.net - 需要迁移到较旧的 Crystal 报表版本才能使用报表
- javascript - 我想从 react.js 中的按钮单击上的选择选项中获取选定的值
- javascript - 如何立即获得上个月第 15 天和当前月第 16 天
- ios - CocoaPods 在快照 (Podfile.lock) 中找不到 pod FirebaseCore 的兼容版本:
- python - python Pill在图像上应用功能并保存它们仅适用于第一张图像
- reactjs - 如何在 DigitalOcean 液滴上运行 docker 映像?
- bash - 在 bash 中等待本地主机
- javascript - 使用 reactjs 渲染 JSON 数据(来自 reddit API)