Class: GemChangelogDiff::GithubClient

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_changelog_diff/github_client.rb

Overview

Fetches release notes from the GitHub Releases API with pagination.

Constant Summary collapse

RELEASES_URL =
"https://api.github.com/repos/%<repo>s/releases"
RATE_LIMIT_WARNING_THRESHOLD =
10
MAX_PAGES =
10

Instance Method Summary collapse

Constructor Details

#initialize(cache: nil) ⇒ GithubClient

Returns a new instance of GithubClient.



13
14
15
# File 'lib/gem_changelog_diff/github_client.rb', line 13

def initialize(cache: nil)
  @cache = cache
end

Instance Method Details

#releases_between(repo, current_version, newest_version) ⇒ Array<Hash>

Returns releases between two versions, sorted newest first.

Parameters:

  • repo (String)

    GitHub "owner/repo" slug

  • current_version (String)

    currently locked version (exclusive)

  • newest_version (String)

    target version (inclusive)

Returns:

  • (Array<Hash>)

    release hashes with :tag_name, :name, :published_at, :body



22
23
24
25
26
27
# File 'lib/gem_changelog_diff/github_client.rb', line 22

def releases_between(repo, current_version, newest_version)
  gem_name = repo.split("/").last
  @active_matcher = TagMatcher.new(gem_name: gem_name)
  releases = fetch_releases(repo, current_version)
  filter_releases(releases, current_version, newest_version)
end