class PrLog::GithubRepository

Adapter for Github Api

Public Class Methods

new(name, access_token) click to toggle source
# File lib/pr_log/github_repository.rb, line 6
def initialize(name, access_token)
  @name = name
  @client = Octokit::Client.new(access_token: access_token)
end

Public Instance Methods

pull_requests_with_milestone(milestone) click to toggle source
# File lib/pr_log/github_repository.rb, line 11
def pull_requests_with_milestone(milestone)
  fail_if_empty(get_issues(milestone_query(milestone)))
end

Private Instance Methods

fail_if_empty(result) click to toggle source
# File lib/pr_log/github_repository.rb, line 21
def fail_if_empty(result)
  return result if result.any?

  raise(NoPullRequestsForMilestone,
        'No pull requests for milestone')
end
get_issues(query) click to toggle source
# File lib/pr_log/github_repository.rb, line 28
def get_issues(query)
  @client.search_issues(query, per_page: 1000)['items'].map(&:to_hash)
rescue Octokit::UnprocessableEntity
  raise(GithubRepositoryNotFound, 'Github repository not found')
end
milestone_query(milestone) click to toggle source
# File lib/pr_log/github_repository.rb, line 17
def milestone_query(milestone)
  "repo:#{@name} type:pr is:merged milestone:#{milestone}"
end