From c0ef0763bfe48ba6954d496f7756c55cdfcbde44 Mon Sep 17 00:00:00 2001 From: Vasiliy Tolstov Date: Wed, 16 Feb 2022 14:59:35 +0300 Subject: [PATCH] allow to set http client Signed-off-by: Vasiliy Tolstov --- options.go | 7 +++++++ vault.go | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/options.go b/options.go index 1d06846..007c72d 100644 --- a/options.go +++ b/options.go @@ -1,12 +1,19 @@ package vault import ( + "net/http" "time" "github.com/hashicorp/vault/api" "go.unistack.org/micro/v3/config" ) +type httpClientKey struct{} + +func HTTPClient(c *http.Client) config.Option { + return config.SetOption(httpClientKey{}, c) +} + type configKey struct{} func Config(cfg *api.Config) config.Option { diff --git a/vault.go b/vault.go index 8255a40..ae28f1e 100644 --- a/vault.go +++ b/vault.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "fmt" + "net/http" "time" "github.com/hashicorp/vault/api" @@ -46,6 +47,10 @@ func (c *vaultConfig) Init(opts ...config.Option) error { cfg = v } + if v, ok := c.opts.Context.Value(httpClientKey{}).(*http.Client); ok { + cfg.HttpClient = v + } + if v, ok := c.opts.Context.Value(timeoutKey{}).(time.Duration); ok { cfg.Timeout = v }