Documentation
¶
Overview ¶
Package gitprovider holds the small slice of REST-client plumbing that is genuinely identical across internal/githubapp, internal/gitlabapp, and internal/bitbucketapp: sending a built request and turning its response into either a decoded value or a uniform API error. Request construction (auth scheme, headers, pagination shape) stays in each provider's own package, since that is exactly where the three providers' real, non-coincidental differences live.
Index ¶
Constants ¶
const CommentPageSize = 100
CommentPageSize is the page size every provider's comment listing asks for.
const MaxCommentPages = 10
MaxCommentPages bounds how many pages a comment lookup walks, so a PR with a huge thread cannot turn one status update into unbounded requests.
const MaxErrorBodySnippet = 512
MaxErrorBodySnippet caps how much of a non-2xx response body an APIError retains, so a misbehaving upstream can't inflate a log line unboundedly.
Variables ¶
This section is empty.
Functions ¶
func Execute ¶
Execute sends req and, on a 2xx response, decodes its body into out (skipped when out is nil). prefix and api identify the caller for both wrapped errors and a returned *APIError's own message; label is the method/URL text those wrapped errors describe, since GitHub's own caller wraps a relative path while GitLab's and Bitbucket's wrap a full URL.
func IsNotFound ¶
IsNotFound reports whether err is a provider 404, meaning the resource (typically a comment an operator deleted) no longer exists.
func IsRateLimited ¶
IsRateLimited reports whether err is a provider API error caused by rate limiting, and the Retry-After value it carried, if any.
Types ¶
type APIError ¶
type APIError struct {
Prefix string
API string
StatusCode int
Body string
// RetryAfter is the response's Retry-After header, empty when absent.
RetryAfter string
// RateLimited is true for a 429, or a 403 the provider marks as rate
// limited (an exhausted X-RateLimit-Remaining or a "rate limit" body).
RateLimited bool
}
APIError is returned for any non-2xx response from a git provider's REST API. Prefix and API identify the caller (e.g. "gitlabapp", "gitlab") so Error() reproduces that client's own message shape.