* Gets releases for a GitHub repository
(
config: GitHubRepoConfig
)
| 78 | * Gets releases for a GitHub repository |
| 79 | */ |
| 80 | public getReleases( |
| 81 | config: GitHubRepoConfig |
| 82 | ): Observable<GitHubRelease[] | AnnotatedError> { |
| 83 | const owner = config.owner; |
| 84 | const repo = config.repo; |
| 85 | const url = `${this.githubAPIUrl}/repos/${owner}/${repo}/releases`; |
| 86 | |
| 87 | return this.http |
| 88 | .get<GitHubRelease[]>(url, { |
| 89 | headers: this.headers, |
| 90 | observe: 'response' |
| 91 | }) |
| 92 | .pipe( |
| 93 | timeout(10000), |
| 94 | this.createRetryStrategy(3, 1000), |
| 95 | map((resp) => { |
| 96 | this.trackRateLimit(resp.headers); |
| 97 | return resp.body!.map((release) => ({ |
| 98 | ...release, |
| 99 | created_at: release.created_at, |
| 100 | published_at: release.published_at |
| 101 | })); |
| 102 | }), |
| 103 | catchError(this.createErrorHandler<GitHubRelease[] | AnnotatedError>()) |
| 104 | ); |
| 105 | } |
| 106 | |
| 107 | /** |
| 108 | * Finds matching JAR asset in a release based on pattern |