Sha256: 3a20f41d236afa025288dea5e6387fdc8d3c3e2b96ee17d95ed5357d5019d74d

Contents?: true

Size: 1.32 KB

Versions: 2

Compression:

Stored size: 1.32 KB

Contents

require 'rest_client'
require 'crack/xml'
require 'rufus/scheduler'
require 'snarl' if RUBY_PLATFORM =~ /mswin|mingw|win32/

class Kilt
  include Crack

  attr_reader :id

  ICON = File.expand_path(File.join(File.dirname(__FILE__), '..', 'img', 'pivotal.png'))

  def self.init(token) 
    new token
  end

  def update
    activities = fetch_activities
    activities.reverse.each do |activity|
      if activity['id'] > @id.to_i
        notify_about activity['description']
      end
    end
    update_id_from activities
  end

  protected

  def initialize(token)
    @token = token
    update_id_from fetch_activities
    Rufus::Scheduler.start_new.every('30s') { update }
  end

  private

  def update_id_from(activities)
    @id = activities.first['id'].to_s
  end

  def fetch_activities
    return XML.parse(RestClient.get("http://www.pivotaltracker.com/services/v3/activities?limit=10",
                                    'X-TrackerToken' => @token).body)['activities']
  end

  def notify_about(message)
    title = 'Pivotal Tracker'
    case RUBY_PLATFORM
    when /linux/
      system "notify-send '#{title}' '#{message}' --icon #{Kilt::ICON}"
    when /darwin/
      system "growlnotify -t '#{title}' -m '#{message}' --image #{Kilt::ICON}"
    when /mswin|mingw|win32/
      Snarl.show_message title, message, Kilt::ICON
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kilt-0.5.1 lib/kilt.rb
kilt-0.5.0 lib/kilt.rb