class Github::Nippou::UserEvents

Public Class Methods

new(client, user, since_date, until_date) click to toggle source
# File lib/github/nippou/user_events.rb, line 9
def initialize(client, user, since_date, until_date)
  @client = client
  @user = user
  @since_time = Time.parse(since_date).beginning_of_day
  until_time = Time.parse(until_date).end_of_day
  @range = @since_time..until_time
end

Public Instance Methods

collect() click to toggle source
# File lib/github/nippou/user_events.rb, line 17
def collect
  uniq(filter(retrieve))
end

Private Instance Methods

continue?(last_response, user_events) click to toggle source
# File lib/github/nippou/user_events.rb, line 35
def continue?(last_response, user_events)
  last_response.rels[:next] &&
    user_events.last.created_at.getlocal >= @since_time
end
filter(user_events) click to toggle source
# File lib/github/nippou/user_events.rb, line 44
def filter(user_events)
  elements = %w(IssuesEvent IssueCommentEvent
                PullRequestEvent PullRequestReviewCommentEvent)

  user_events.select do |user_event|
    elements.include?(user_event.type)
  end
end
in_range?(user_event) click to toggle source
# File lib/github/nippou/user_events.rb, line 40
def in_range?(user_event)
  @range.include?(user_event.created_at.getlocal)
end
retrieve() click to toggle source
# File lib/github/nippou/user_events.rb, line 23
def retrieve
  user_events = @client.user_events(@user, per_page: 100)
  last_response = @client.last_response

  while continue?(last_response, user_events)
    last_response = last_response.rels[:next].get
    user_events.concat(last_response.data)
  end

  user_events.select { |user_event| in_range?(user_event) }
end
uniq(user_events) click to toggle source
# File lib/github/nippou/user_events.rb, line 53
def uniq(user_events)
  user_events.uniq do |user_event|
    user_event.html_url
  end
end