class CC::Service::Jira

Public Instance Methods

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

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

  create_ticket(title, body)
end
receive_quality() click to toggle source
# File lib/cc/services/jira.rb, line 42
def receive_quality
  create_ticket(quality_title, details_url)
end
receive_test() click to toggle source
# File lib/cc/services/jira.rb, line 35
def receive_test
  result = create_ticket("Test ticket from Code Climate", "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/jira.rb, line 54
def receive_vulnerability
  formatter = CC::Formatters::TicketFormatter.new(self)

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

Private Instance Methods

create_ticket(title, ticket_body) click to toggle source
# File lib/cc/services/jira.rb, line 65
def create_ticket(title, ticket_body)
  params = {
    fields:
      {
        project: { id: config.project_id },
        summary: title,
        description: ticket_body,
        issuetype: { name: config.issue_type },
      },
  }

  if config.labels.present?
    params[:fields][:labels] = config.labels.split(",")
  end

  http.headers["Content-Type"] = "application/json"
  http.basic_auth(config.username, config.password)

  url = "https://#{config.domain}/rest/api/2/issue/"

  service_post(url, params.to_json) do |response|
    body = JSON.parse(response.body)
    {
      id: body["id"],
      key: body["key"],
      url: "https://#{config.domain}/browse/#{body["key"]}",
    }
  end
end