class GitNetworkitis::CommitGetter

NOTE tested via the Branch specs

Public Instance Methods

get() click to toggle source
Calls superclass method
# File lib/gitnetworkitis/commit_getter.rb, line 4
def get
  if local_options[:since]
    since_commits
  else
    response = super
    build_commits response
  end
end

Private Instance Methods

batched_since_commits() { |c| ... } click to toggle source
# File lib/gitnetworkitis/commit_getter.rb, line 22
def batched_since_commits &block
  links = {next: url}
  results = []
  while links[:next] do
    self.url = links[:next]
    resp = single_get
    staged_commits = build_commits resp
    since_index = staged_commits.find_index {|c| yield(c) == local_options[:since] }
    if since_index
      results += staged_commits.first(since_index)
      links = {}
    else
      results << staged_commits
      links = build_links_from_headers resp.headers['link']
    end
  end
  results
end
build_commits(response) click to toggle source
# File lib/gitnetworkitis/commit_getter.rb, line 41
def build_commits(response)
  parse_json(escape_json(response.body.to_s)).inject([]) do |commits, commit|
    commit_attrs = commit['commit'].merge('sha' => commit['sha'], 'parents' => commit['parents'])
    parsed_commit = parse_attributes(commit_attrs, Commit.new(query_options[:access_token]))
    commits << parsed_commit
  end
end
since_commits() click to toggle source
# File lib/gitnetworkitis/commit_getter.rb, line 15
def since_commits
  since_date = DateTime.parse local_options[:since]
  batched_since_commits {|c| c.committer['date'] }
rescue ArgumentError => e
  batched_since_commits &:sha
end