Class: HubLink::Api::PullRequest

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/hub_link/api/pull_request.rb

Class Method Summary collapse

Instance Method Summary collapse

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

#additionsObject



30
31
32
# File 'lib/hub_link/api/pull_request.rb', line 30

def additions
  extended_data.additions
end

#approval_timeObject



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. - created_at).in_hours
end

#body_sizeObject



34
35
36
# File 'lib/hub_link/api/pull_request.rb', line 34

def body_size
  body.to_s.size
end

#labelsObject



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_timeObject



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

#repoObject



64
65
66
# File 'lib/hub_link/api/pull_request.rb', line 64

def repo
  extended_data.base.repo.full_name
end

#review_countObject



60
61
62
# File 'lib/hub_link/api/pull_request.rb', line 60

def review_count
  reviews.size
end

#review_requestsObject



26
27
28
# File 'lib/hub_link/api/pull_request.rb', line 26

def review_requests
  @_review_requests ||= fetch_review_requests
end

#reviewsObject



22
23
24
# File 'lib/hub_link/api/pull_request.rb', line 22

def reviews
  @_reviews ||= fetch_reviews
end

#straight_approval?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/hub_link/api/pull_request.rb', line 56

def straight_approval?
  reviews.all?(&:approval?)
end

#submitterObject



18
19
20
# File 'lib/hub_link/api/pull_request.rb', line 18

def submitter
   user.
end

#time_to_first_reviewObject



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. - created_at).in_hours
end

#to_hObject



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