class Buildkite::Builder::Github

Constants

ACCEPT_HEADER
BASE_URI
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