var ErrNoEndpoints … var ErrTooManyRedirects … var ErrClusterUnavailable … var ErrNoLeaderEndpoint … var errTooManyRedirectChecks … var oneShotCtxValue … var DefaultRequestTimeout … var DefaultTransport … type EndpointSelectionMode … const EndpointSelectionRandom … const EndpointSelectionPrioritizeLeader … type Config … func (cfg *Config) transport() CancelableTransport { … } func (cfg *Config) checkRedirect() CheckRedirectFunc { … } type CancelableTransport … type CheckRedirectFunc … var DefaultCheckRedirect … type Client … func New(cfg Config) (Client, error) { … } type httpClient … func newHTTPClientFactory(tr CancelableTransport, cr CheckRedirectFunc, headerTimeout time.Duration) httpClientFactory { … } type credentials … type httpClientFactory … type httpAction … type httpClusterClient … func (c *httpClusterClient) getLeaderEndpoint(ctx context.Context, eps []url.URL) (string, error) { … } func (c *httpClusterClient) parseEndpoints(eps []string) ([]url.URL, error) { … } func (c *httpClusterClient) SetEndpoints(eps []string) error { … } func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Response, []byte, error) { … } func (c *httpClusterClient) Endpoints() []string { … } func (c *httpClusterClient) Sync(ctx context.Context) error { … } func (c *httpClusterClient) AutoSync(ctx context.Context, interval time.Duration) error { … } func (c *httpClusterClient) GetVersion(ctx context.Context) (*version.Versions, error) { … } type roundTripResponse … type simpleHTTPClient … var ErrNoRequest … func (c *simpleHTTPClient) Do(ctx context.Context, act httpAction) (*http.Response, []byte, error) { … } type authedAction … func (a *authedAction) HTTPRequest(url url.URL) *http.Request { … } type redirectFollowingHTTPClient … func (r *redirectFollowingHTTPClient) Do(ctx context.Context, act httpAction) (*http.Response, []byte, error) { … } type redirectedHTTPAction … func (r *redirectedHTTPAction) HTTPRequest(ep url.URL) *http.Request { … } func shuffleEndpoints(r *rand.Rand, eps []url.URL) []url.URL { … } func endpointsEqual(left, right []url.URL) bool { … }