class GrowlGithubFeed::Master
Attributes
conf[R]
growl[R]
Public Class Methods
new()
click to toggle source
# File lib/growl-github-feed/master.rb, line 12 def initialize @conf = Config.new @growl = GrowlGithubFeed::PopUpper.new @last_event_time = Time.now.getlocal - 24*60*60; # daemonize @term = false @logger = Logger.new("./growl-github-feed.log") @logger.info "GrowlGithubFeed daemon start .." @pid_file_path = './growl-github-feed.pid' end
Public Instance Methods
daemonize()
click to toggle source
# File lib/growl-github-feed/master.rb, line 74 def daemonize exit!(0) if Process.fork Process.setsid exit!(0) if Process.fork open_pid_file end
execute()
click to toggle source
# File lib/growl-github-feed/master.rb, line 24 def execute github = self.get_auth loop do re_feeds = github.received_events("#{@conf.user}") usr_feeds = github.user_events("#{@conf.user}") tmp_last_event_time = @last_event_time [ re_feeds, usr_feeds ].each do |feeds| return [] if feeds.empty? events = feeds.map{|r| Event.new(r)} events.each do |event| timestamp = event.created_at if @last_event_time < timestamp title, msg, img = self.extract_event_info event @logger.info "[#{timestamp}]" @logger.info "title: #{title}" @logger.info "message: #{msg}" @growl.notify(title, msg, img) else next end end # /events.each{} ts = feeds[0].created_at tmp_last_event_time = ts if tmp_last_event_time < ts end @last_event_time = tmp_last_event_time sleep 10 end end
extract_event_info(event)
click to toggle source
utils
# File lib/growl-github-feed/master.rb, line 94 def extract_event_info(event) title = "#{event.user}" title += "@#{event.repo_name}" msg = "#{event.comment_body}\n" msg += "#{event.created_at}" avatar_id = "#{event.user_avatar_id}" img = self.get_img(avatar_id) return title, msg, img end
get_auth()
click to toggle source
# File lib/growl-github-feed/master.rb, line 114 def get_auth return Octokit::Client.new(:login => "#{@conf.user}", :password => "#{@conf.pass}") if @conf.token.nil? Octokit::Client.new :access_token => "#{@conf.token}" end
get_img(user_id)
click to toggle source
# File lib/growl-github-feed/master.rb, line 104 def get_img(user_id) return File.open(__DIR__ + "/../appIcons.icns").read if user_id.nil? uri = URI("http://www.gravatar.com/avatar/#{user_id}.jpg") host = uri.host path = uri.path http = Net::HTTP.new(host) response = http.get(path) response.body.to_s.force_encoding("UTF-8") end
open_pid_file()
click to toggle source
# File lib/growl-github-feed/master.rb, line 81 def open_pid_file begin open( @pid_file_path, 'w' ) {|f| f << Process.pid } if @pid_file_path rescue => ex @logger.error "could not open pid file (#{@pid_file_path})" @logger.error "error: #{ex}" @logger.error ex.backtrace * "\n" end end
run()
click to toggle source
daemon
# File lib/growl-github-feed/master.rb, line 56 def run daemonize begin Signal.trap(:TERM) { shutdown } Signal.trap(:INT) { shutdown } execute rescue => ex @logger.error ex end end
shutdown()
click to toggle source
# File lib/growl-github-feed/master.rb, line 67 def shutdown @term = true @logger.info "GrowlGithubFeed close.." @logger.close #FileUtils.rm @pid_file_path end