NewClient returns a new Client.
(cfg Config, codec codec.Codec, logger log.Logger, registerer prometheus.Registerer)
| 84 | |
| 85 | // NewClient returns a new Client. |
| 86 | func NewClient(cfg Config, codec codec.Codec, logger log.Logger, registerer prometheus.Registerer) (*Client, error) { |
| 87 | client, err := consul.NewClient(&consul.Config{ |
| 88 | Address: cfg.Host, |
| 89 | Token: cfg.ACLToken.String(), |
| 90 | Scheme: "http", |
| 91 | HttpClient: &http.Client{ |
| 92 | Transport: cleanhttp.DefaultPooledTransport(), |
| 93 | // See https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/ |
| 94 | Timeout: cfg.HTTPClientTimeout, |
| 95 | }, |
| 96 | }) |
| 97 | if err != nil { |
| 98 | return nil, err |
| 99 | } |
| 100 | consulMetrics := newConsulMetrics(registerer) |
| 101 | |
| 102 | c := &Client{ |
| 103 | kv: consulInstrumentation{client.KV(), consulMetrics}, |
| 104 | codec: codec, |
| 105 | cfg: cfg, |
| 106 | logger: logger, |
| 107 | consulMetrics: consulMetrics, |
| 108 | } |
| 109 | return c, nil |
| 110 | } |
| 111 | |
| 112 | // Put is mostly here for testing. |
| 113 | func (c *Client) Put(ctx context.Context, key string, value interface{}) error { |
no test coverage detected