class Buildkite::Builder::Github
Constants
- ACCEPT_HEADER
- BASE_URI
- LINK_HEADER
- NEXT_LINK_REGEX
- PER_PAGE
- REPO_REGEX
Public Class Methods
new(env = ENV)
click to toggle source
# File lib/buildkite/builder/github.rb, line 21 def initialize(env = ENV) @env = env end
pull_request_files()
click to toggle source
# File lib/buildkite/builder/github.rb, line 17 def self.pull_request_files new.pull_request_files end
Public Instance Methods
pull_request_files()
click to toggle source
# File lib/buildkite/builder/github.rb, line 25 def pull_request_files files = [] next_uri = URI.join(BASE_URI, "repos/#{repo}/pulls/#{pull_request_number}/files?per_page=#{PER_PAGE}") while next_uri response = request(next_uri) files.concat(JSON.parse(response.body)) next_uri = parse_next_uri(response) end files end
Private Instance Methods
parse_next_uri(response)
click to toggle source
# File lib/buildkite/builder/github.rb, line 62 def parse_next_uri(response) links = response[LINK_HEADER] return unless links matches = links.match(NEXT_LINK_REGEX) URI.parse(matches[:uri]) if matches end
pull_request_number()
click to toggle source
# File lib/buildkite/builder/github.rb, line 48 def pull_request_number Buildkite.env.pull_request end
repo()
click to toggle source
# File lib/buildkite/builder/github.rb, line 40 def repo Buildkite.env.repo[REPO_REGEX, 1] end
request(uri)
click to toggle source
# File lib/buildkite/builder/github.rb, line 52 def request(uri) Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| request = Net::HTTP::Get.new(uri) request['Authorization'] = "token #{token}" request['Accept'] = ACCEPT_HEADER http.request(request) end end
token()
click to toggle source
# File lib/buildkite/builder/github.rb, line 44 def token @env.fetch('GITHUB_API_TOKEN') end