lib/pronto/github_pull.rb
module Pronto # Provides strategies for finding corresponding PR on GitHub class GithubPull def initialize(client, slug) @client = client @slug = slug end def pull_requests @pull_requests ||= @client.pull_requests(@slug) end def pull_by_id(pull_id) result = pull_requests.find { |pr| pr[:number].to_i == pull_id } unless result message = "Pull request ##{pull_id} was not found in #{@slug}." raise Pronto::Error, message end result end def pull_by_branch(branch) result = pull_requests.find { |pr| pr[:head][:ref] == branch } unless result raise Pronto::Error, "Pull request for branch #{branch} " \ "was not found in #{@slug}." end result end def pull_by_commit(sha) result = pull_requests.find do |pr| pr[:head][:sha] == sha end unless result message = "Pull request with head #{sha} " \ "was not found in #{@slug}." raise Pronto::Error, message end result end end end