Class: HubLink::Api::PullRequest
- Inherits:
-
SimpleDelegator
- Object
- SimpleDelegator
- HubLink::Api::PullRequest
- Defined in:
- lib/hub_link/api/pull_request.rb
Class Method Summary collapse
Instance Method Summary collapse
- #additions ⇒ Object
- #approval_time ⇒ Object
- #body_size ⇒ Object
- #labels ⇒ Object
- #merge_time ⇒ Object
- #repo ⇒ Object
- #review_count ⇒ Object
- #review_requests ⇒ Object
- #reviews ⇒ Object
- #straight_approval? ⇒ Boolean
- #submitter ⇒ Object
- #time_to_first_review ⇒ Object
- #to_h ⇒ Object
Class Method Details
.oldest(repo:) ⇒ Object
14 15 16 |
# File 'lib/hub_link/api/pull_request.rb', line 14 def self.oldest(repo:) search("type:pr sort:updated-asc repo:#{repo}").first end |
.search(filter) ⇒ Object
10 11 12 |
# File 'lib/hub_link/api/pull_request.rb', line 10 def self.search(filter) Octokit.search_issues(filter).items.map { |item| new(item) } end |
Instance Method Details
#additions ⇒ Object
30 31 32 |
# File 'lib/hub_link/api/pull_request.rb', line 30 def additions extended_data.additions end |
#approval_time ⇒ Object
50 51 52 53 54 |
# File 'lib/hub_link/api/pull_request.rb', line 50 def approval_time return if first_approval.blank? (first_approval.submitted_at - created_at).in_hours end |
#body_size ⇒ Object
34 35 36 |
# File 'lib/hub_link/api/pull_request.rb', line 34 def body_size body.to_s.size end |
#labels ⇒ Object
68 69 70 |
# File 'lib/hub_link/api/pull_request.rb', line 68 def labels @_labels ||= Octokit.labels_for_issue(repo, number).map(&:name).join(", ") end |
#merge_time ⇒ Object
38 39 40 41 42 |
# File 'lib/hub_link/api/pull_request.rb', line 38 def merge_time return unless merged? (closed_at - created_at).in_hours end |
#repo ⇒ Object
64 65 66 |
# File 'lib/hub_link/api/pull_request.rb', line 64 def repo extended_data.base.repo.full_name end |
#review_count ⇒ Object
60 61 62 |
# File 'lib/hub_link/api/pull_request.rb', line 60 def review_count reviews.size end |
#review_requests ⇒ Object
26 27 28 |
# File 'lib/hub_link/api/pull_request.rb', line 26 def review_requests @_review_requests ||= fetch_review_requests end |
#reviews ⇒ Object
22 23 24 |
# File 'lib/hub_link/api/pull_request.rb', line 22 def reviews @_reviews ||= fetch_reviews end |
#straight_approval? ⇒ Boolean
56 57 58 |
# File 'lib/hub_link/api/pull_request.rb', line 56 def straight_approval? reviews.all?(&:approval?) end |
#submitter ⇒ Object
18 19 20 |
# File 'lib/hub_link/api/pull_request.rb', line 18 def submitter user.login end |
#time_to_first_review ⇒ Object
44 45 46 47 48 |
# File 'lib/hub_link/api/pull_request.rb', line 44 def time_to_first_review return if first_review.blank? (first_review.submitted_at - created_at).in_hours end |
#to_h ⇒ Object
72 73 74 |
# File 'lib/hub_link/api/pull_request.rb', line 72 def to_h Slicer.new(self, columns: i(id number created_at updated_at closed_at approval_time time_to_first_review merge_time body_size additions review_count submitter straight_approval? labels repo)).to_h end |