class CruisecontrolrbToSlack::Cruisecontrolrb

Public Class Methods

new(base_url, username = nil, password = nil) click to toggle source
# File lib/cruisecontrolrb-to-slack/cruisecontrolrb.rb, line 7
def initialize(base_url, username = nil, password = nil)
  @auth = { :username => username, :password => password }
  @base_url = base_url
end

Public Instance Methods

fetch_project_details(project) click to toggle source
# File lib/cruisecontrolrb-to-slack/cruisecontrolrb.rb, line 29
def fetch_project_details(project)
  noko = Nokogiri::XML(retrieve_content("http://#{@base_url}/projects/#{project}.rss"))
   item_node = noko.search("item")
   return {} unless item_node.first

   item = item_node.first

   commit = item.at('guid').text.split('/')[-1]
   description = item.at('description').text
   title = item.at('title').text

   commit_details = description.match(/committed by (.+)/)[1].split(' ' )
   committer = commit_details[0]
   commit_time = commit_details[-2..-1].join(' ')
   commit_comment = description.split("\n\n")[1]

   {
    commit_url: "https://github.com/zumobi/#{project}/commit/#{commit[0..10]}",
    committer: committer,
    commit_time: commit_time,
    commit: commit[0..10],
    commit_comment: commit_comment.strip,
    description: description,
    title: title,
   }
end
fetch_statuses() click to toggle source
# File lib/cruisecontrolrb-to-slack/cruisecontrolrb.rb, line 12
def fetch_statuses
  noko = Nokogiri::XML(retrieve_content("http://#{@base_url}/XmlStatusReport.aspx"))
  projects = noko.search("Project")
  return [] unless projects.first
  
  projects.map do |project|

    status_hash = { 
                    status: project["lastBuildStatus"],
                    web_url: project["webUrl"],
                    build_label: project["lastBuildLabel"],
                    activity: project["activity"],
                    name: project['name'] }
    status_hash
  end        
end

Private Instance Methods

retrieve_content(url) click to toggle source
# File lib/cruisecontrolrb-to-slack/cruisecontrolrb.rb, line 58
def retrieve_content(url)
  options = { :basic_auth => @auth }
  self.class.get(url, options).parsed_response
end