Sha256: bdfa9dc1646913282a7eb0b88d8dbd534f8c9cb8498d000f59fe7c9e506622c8

Contents?: true

Size: 1.32 KB

Versions: 4

Compression:

Stored size: 1.32 KB

Contents

require 'chicanery/site'
require 'nokogiri'
require 'date'

module Chicanery
  module Cctray
    def self.new *args
      Cctray::Server.new *args
    end

    def cctray *args
      server Cctray::Server.new *args
    end

    class Server < Chicanery::Site
      def jobs
        jobs = {}
        Nokogiri::XML(response_body = get).css("Project").each do |project|
          job = {
            activity: project[:activity] == 'Sleeping' ? :sleeping : :building,
            last_build_status: parse_build_status(project[:lastBuildStatus]),
            last_build_time: parse_build_time(project[:lastBuildTime]),
            url: project[:webUrl],
            last_label: project[:lastBuildLabel]
          }
          jobs[project[:name]] = job unless filtered project[:name]
        end
        raise "could not find any jobs in response: [#{response_body}]" if jobs.empty?
        jobs
      end

      def parse_build_time time
        return nil if time.nil? || time.empty?
        DateTime.parse(time).to_time.to_i
      end

      def parse_build_status status
        case status
        when /^Success/ then :success
        when /^Unknown/ then :unknown
        else :failure
        end
      end

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

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
chicanery-0.1.5 lib/chicanery/cctray.rb
chicanery-0.1.4 lib/chicanery/cctray.rb
chicanery-0.1.3 lib/chicanery/cctray.rb
chicanery-0.1.1 lib/chicanery/cctray.rb