Загрузите файл GitHub с помощью Octokit::Клиент в Ruby

#ruby #github-api #octokit #danger

Вопрос:

Я пытаюсь загрузить XML-файл с GitHub через Octokit::Клиент на Ruby. Это в файле Dangerfile, поэтому у меня есть доступ к клиенту через 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')
 

Это вернуло a Sawyer::Resource , но мне еще предстоит найти способ получить какие-либо данные из этого. Я пробовал комбинации .get.data и .data , но ни одна из них не сработала. Обращение Base64.decode64() к результату тоже ничего не дало.
Я подозреваю, что мне может понадобиться заголовок «принять», но я не уверен, как бы я сделал это с Octokit::Client.
У кого-нибудь есть какие-нибудь предложения. Я бы предположил, что это будет обычная задача, но я не могу найти примеров.

Ответ №1:

В конце концов я смог во всем разобраться. В нем есть content свойство Sawyer::Resource , которое предоставляет данные Base64. Таким образом, окончательное решение заключается в:

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

Затем я могу позвонить Nokogiri::XML(download) и проанализировать XML без каких-либо проблем.