class MakeTriage::ProjectBuilder

Attributes

outputter[RW]

Public Class Methods

new(owner, repo, token = nil) click to toggle source
# File lib/make_triage/project_builder.rb, line 11
def initialize(owner, repo, token = nil)
  @owner = owner
  @repo = repo
  @token = token
end

Public Instance Methods

make() click to toggle source
# File lib/make_triage/project_builder.rb, line 17
def make
  new_project_id = create_project 'Bug Tracking', 'Issue tracking and triage board'
  if new_project_id
    create_columns new_project_id, MakeTriage.default_columns
  end
end

Private Instance Methods

create_column(project_id, column_name) click to toggle source
# File lib/make_triage/project_builder.rb, line 45
def create_column(project_id, column_name)
  uri = MakeTriage.make_column_uri project_id, @token
  payload = {
    "name" => column_name
  }
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true if uri.scheme == "https"
  req = Net::HTTP::Post.new uri.request_uri
  req.content_type = "application/json"
  req.add_field "Accept", "application/vnd.github.inertia-preview+json"
  req.body = payload.to_json
  return handle_response http.request(req)
end
create_columns(project_id, columns) click to toggle source
# File lib/make_triage/project_builder.rb, line 41
def create_columns(project_id, columns)
  columns.each { |column_name| create_column(project_id, column_name) }
end
create_project(name, description) click to toggle source
# File lib/make_triage/project_builder.rb, line 25
def create_project(name, description)
  uri = MakeTriage.make_project_uri @owner, @repo, @token
  payload = {
    "name" => name,
    "body" => description
  }
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true if uri.scheme == "https"
  req = Net::HTTP::Post.new uri.request_uri
  req.content_type = "application/json"
  req.add_field "Accept", "application/vnd.github.inertia-preview+json"
  req.body = payload.to_json
  response = handle_response http.request(req)
  return retrieve_id(response) unless response == false
end
handle_response(response) click to toggle source
# File lib/make_triage/project_builder.rb, line 59
def handle_response(response)
  error_handler = ErrorHandler.new
  if error_handler.response_has_error response
    error_handler.handle_error error_handler.error_message(response.body), true
    return false
  end
  return response.body
end
retrieve_id(body) click to toggle source
# File lib/make_triage/project_builder.rb, line 68
def retrieve_id(body)
  response_obj = JSON.parse(body)
  response_obj["id"]
end