Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.2 KiB
49 lines
1.2 KiB
package gitlab |
|
|
|
import ( |
|
"net/http" |
|
|
|
retryablehttp "github.com/hashicorp/go-retryablehttp" |
|
) |
|
|
|
// ClientOptionFunc can be used customize a new GitLab API client. |
|
type ClientOptionFunc func(*Client) error |
|
|
|
// WithBaseURL sets the base URL for API requests to a custom endpoint. |
|
func WithBaseURL(urlStr string) ClientOptionFunc { |
|
return func(c *Client) error { |
|
return c.setBaseURL(urlStr) |
|
} |
|
} |
|
|
|
// WithCustomBackoff can be used to configure a custom backoff policy. |
|
func WithCustomBackoff(backoff retryablehttp.Backoff) ClientOptionFunc { |
|
return func(c *Client) error { |
|
c.client.Backoff = backoff |
|
return nil |
|
} |
|
} |
|
|
|
// WithCustomRetry can be used to configure a custom retry policy. |
|
func WithCustomRetry(checkRetry retryablehttp.CheckRetry) ClientOptionFunc { |
|
return func(c *Client) error { |
|
c.client.CheckRetry = checkRetry |
|
return nil |
|
} |
|
} |
|
|
|
// WithHTTPClient can be used to configure a custom HTTP client. |
|
func WithHTTPClient(httpClient *http.Client) ClientOptionFunc { |
|
return func(c *Client) error { |
|
c.client.HTTPClient = httpClient |
|
return nil |
|
} |
|
} |
|
|
|
// WithoutRetries disables the default retry logic. |
|
func WithoutRetries() ClientOptionFunc { |
|
return func(c *Client) error { |
|
c.disableRetries = true |
|
return nil |
|
} |
|
}
|
|
|