class Buildkite::Pipelines::Api

Constants

BASE_URI
URI_PARTS

Public Class Methods

new(token) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 20
def initialize(token)
  @token = token
end

Public Instance Methods

cancel_build(organization, pipeline, build) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 75
def cancel_build(organization, pipeline, build)
  raise NotImplementedError
end
create_build(organization, pipeline) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 71
def create_build(organization, pipeline)
  raise NotImplementedError
end
create_pipeline(organization, params) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 45
def create_pipeline(organization, params)
  uri = uri_for(
    organization: organization,
    pipelines: nil
  )
  JSON.parse(post_request(uri, params).body)
end
get_access_token() click to toggle source
# File lib/buildkite/pipelines/api.rb, line 24
def get_access_token
  uri = uri_for(access_token: nil)
  JSON.parse(get_request(uri).body)
end
get_build(organization, pipeline, build) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 62
def get_build(organization, pipeline, build)
  uri = uri_for(
    organization: organization,
    pipeline: pipeline,
    build: build
  )
  JSON.parse(get_request(uri).body)
end
get_pipeline(organization, pipeline) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 33
def get_pipeline(organization, pipeline)
  response = get_request(
    uri_for(
      organization: organization,
      pipeline: pipeline
    )
  )
  if response.is_a?(Net::HTTPSuccess)
    JSON.parse(response.body)
  end
end
get_pipeline_builds(organization, pipeline, **params) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 53
def get_pipeline_builds(organization, pipeline, **params)
  uri = uri_for(params.merge(
    organization: organization,
    pipeline: pipeline,
    builds: nil
  ))
  JSON.parse(get_request(uri).body)
end
list_pipelines(organization) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 29
def list_pipelines(organization)
  raise NotImplementedError
end
rebuild_build(organization, pipeline, build) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 79
def rebuild_build(organization, pipeline, build)
  raise NotImplementedError
end

Private Instance Methods

get_request(uri) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 85
def get_request(uri)
  Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    request = prepare_request(Net::HTTP::Get.new(uri))
    http.request(request)
  end
end
post_request(uri, data) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 92
def post_request(uri, data)
  Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
    request = prepare_request(Net::HTTP::Post.new(uri))
    request.content_type = 'application/json'
    request.body = data.to_json
    http.request(request)
  end
end
prepare_request(request) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 112
def prepare_request(request)
  request['Authorization'] = "Bearer #{@token}"
  request['Accept'] = 'application/json'
  request
end
uri_for(options) click to toggle source
# File lib/buildkite/pipelines/api.rb, line 101
def uri_for(options)
  uri_parts = URI_PARTS.each_with_object([]) do |(resource, path), parts|
    if options.key?(resource)
      parts << [path, options.delete(resource)].compact
    end
  end
  uri = URI(uri_parts.flatten.unshift(BASE_URI).join('/'))
  uri.query = URI.encode_www_form(options) if options.any?
  uri
end