class CC::Service::PivotalTracker

Constants

BASE_URL

Public Instance Methods

receive_issue() click to toggle source
# File lib/cc/services/pivotal_tracker.rb, line 34
def receive_issue
  title = %(Fix "#{issue["check_name"]}" issue in #{constant_name})

  body = [issue["description"], details_url].join("\n\n")

  create_story(title, body)
end
receive_quality() click to toggle source
# File lib/cc/services/pivotal_tracker.rb, line 30
def receive_quality
  create_story(quality_title, details_url)
end
receive_test() click to toggle source
# File lib/cc/services/pivotal_tracker.rb, line 23
def receive_test
  result = create_story("Test ticket from Code Climate", "")
  result.merge(
    message: "Ticket <a href='#{result[:url]}'>#{result[:id]}</a> created.",
  )
end
receive_vulnerability() click to toggle source
# File lib/cc/services/pivotal_tracker.rb, line 42
def receive_vulnerability
  formatter = CC::Formatters::TicketFormatter.new(self)

  create_story(
    formatter.format_vulnerability_title,
    formatter.format_vulnerability_body,
  )
end

Private Instance Methods

create_story(name, description) click to toggle source
# File lib/cc/services/pivotal_tracker.rb, line 53
def create_story(name, description)
  params = {
    "story[name]"        => name,
    "story[story_type]"  => "chore",
    "story[description]" => description,
  }

  if config.labels.present?
    params["story[labels]"] = config.labels.strip
  end

  http.headers["X-TrackerToken"] = config.api_token
  url = "#{BASE_URL}/projects/#{config.project_id}/stories"

  service_post(url, params) do |response|
    body = Nokogiri::XML(response.body)
    {
      id: (body / "story/id").text,
      url: (body / "story/url").text,
    }
  end
end