Class: GitMarkdown::Providers::GitHub

Inherits:
Base
  • Object
show all
Defined in:
lib/git/markdown/providers/github.rb,
lib/git/markdown/providers/github/graphql.rb

Defined Under Namespace

Classes: Graphql

Instance Attribute Summary

Attributes inherited from Base

#config

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from GitMarkdown::Providers::Base

Instance Method Details

#fetch_comments(owner, repo, number) ⇒ Object



16
17
18
19
20
21
# File 'lib/git/markdown/providers/github.rb', line 16

def fetch_comments(owner, repo, number)
  path = "/repos/#{owner}/#{repo}/issues/#{number}/comments"
  comments = fetch_all_pages(path)

  comments.map { |data| Models::Comment.from_api(data) }
end

#fetch_pull_request(owner, repo, number) ⇒ Object

Raises:



6
7
8
9
10
11
12
13
14
# File 'lib/git/markdown/providers/github.rb', line 6

def fetch_pull_request(owner, repo, number)
  path = "/repos/#{owner}/#{repo}/pulls/#{number}"
  response = client.get(path)

  raise NotFoundError, "Pull request #{owner}/#{repo}##{number} not found" if response.not_found?
  raise ApiError, "Failed to fetch PR: #{response.error_message}" unless response.success?

  Models::PullRequest.from_api(response.data)
end

#fetch_review_comments(owner, repo, review_id, resolved_ids = Set.new) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/git/markdown/providers/github.rb', line 44

def fetch_review_comments(owner, repo, review_id, resolved_ids = Set.new)
  all_pr_comments = fetch_all_pr_comments(owner, repo)

  all_pr_comments
    .select { |c| c["pull_request_review_id"] == review_id }
    .map do |data|
      comment = Models::Comment.from_api(data)
      comment.resolved = resolved_ids.include?(comment.id)
      comment
    end
end

#fetch_reviews(owner, repo, number) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/git/markdown/providers/github.rb', line 23

def fetch_reviews(owner, repo, number)
  resolved_ids = fetch_resolved_comment_ids(owner, repo, number)

  path = "/repos/#{owner}/#{repo}/pulls/#{number}/reviews"
  reviews = fetch_all_pages(path)

  all_pr_comments = fetch_all_pr_comments(owner, repo, number)

  reviews.map do |review_data|
    review = Models::Review.from_api(review_data)
    review.comments = all_pr_comments
      .select { |c| c["pull_request_review_id"] == review.id }
      .map do |data|
        comment = Models::Comment.from_api(data)
        comment.resolved = resolved_ids.include?(comment.id)
        comment
    end
    review
  end
end