Sha256: 91e7ac47457bd1110fa715062a2abfff78c82004448376b280e2e73f5621c14f

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

module Octospy
  class Worker
    attr_reader :thread

    def initialize(repositories, &block)
      @repositories = repositories
      @block = block
      @last_event_id = nil
      thread_loop
    end

    def thread_loop
      @thread = Thread.start do
        loop do
          begin
            watch_repositories
            sleep 30
          rescue => e
            puts e.message
            sleep 30
          end
        end
      end
    end

    def events
      @repositories.each_with_object([]) do |repo, arr|
        arr.concat ::Octokit.repository_events(repo)
      end
    end

    def watch_repositories
      events.sort_by(&:id).reverse_each { |event|
        if @last_event_id.nil?
          next if Time.now.utc - (60*60) >= event.created_at
        else
          next if @last_event_id >= event.id
        end

        parsed_event = Octospy.parse(event)
        next unless parsed_event

        @last_event_id = event.id
        parsed_event.each { |p| @block.call p[:message] }
      }
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
octospy-0.0.3 lib/octospy/worker.rb
octospy-0.0.2 lib/octospy/worker.rb
octospy-0.0.1 lib/octospy/worker.rb