#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 без каких-либо проблем.