Sha256: fb5cb565cc81d2e9f0ea6af7ca215930afbd11e439bfc1a3575e0c0ee0d51c3a

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

require 'net/http'
require 'nokogiri'
require 'date'

module Chicanery
  class Cctray
    attr_reader :name, :uri, :options

    def initialize name, url, options={}
      @name, @uri, @options = name, URI(url), options
    end

    def get
      req = Net::HTTP::Get.new(uri.path)
      req.basic_auth user, password if options[:user] and options[:password]
      res = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https', verify_mode: OpenSSL::SSL::VERIFY_NONE) do |https|
        https.request(req)
      end
      res.body
    end

    def jobs
      jobs = {}
      Nokogiri::XML(get).css("Project").each do |project|
        job = {
          activity: project[:activity] == 'Sleeping' ? :sleeping : :building,
          last_build_status: project[:lastBuildStatus] == 'Success' ? :success : :failure,
          last_build_time: project[:lastBuildTime].empty? ? nil : DateTime.parse(project[:lastBuildTime]),
          url: project[:webUrl],
          last_label: project[:lastBuildLabel]
        }
        jobs[project[:name]] = job unless filtered project[:name]
      end
      jobs
    end

    def filtered name
      return false unless options[:include]
      !options[:include].match(name)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chicanery-0.0.5 lib/chicanery/cctray.rb
chicanery-0.0.4 lib/chicanery/cctray.rb