From 68d8a08ba51c7b33db4c8ad04ccac728ee155e5f Mon Sep 17 00:00:00 2001 From: Jeff Moore Date: Mon, 26 Aug 2019 18:17:09 -0400 Subject: [PATCH] Added token support to elasticsearch.Config struct --- elasticsearch.go | 8 ++++++-- estransport/estransport.go | 21 ++++++++++++++++++--- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/elasticsearch.go b/elasticsearch.go index 0d312aa500..9c3e8a4304 100755 --- a/elasticsearch.go +++ b/elasticsearch.go @@ -30,7 +30,9 @@ type Config struct { Password string // Password for HTTP Basic Authentication. CloudID string // Endpoint for the Elastic Service (https://elastic.co/cloud). - APIKey string // Base64-encoded token for authorization; if set, overrides username and password. + + APIKey string // Base64-encoded token for authorization; if set, overrides username, password, and token + Token string // Token used for authorization. if set, overrides username and password. Transport http.RoundTripper // The HTTP transport object. Logger estransport.Logger // The logger object. @@ -110,7 +112,9 @@ func NewClient(cfg Config) (*Client, error) { URLs: urls, Username: cfg.Username, Password: cfg.Password, - APIKey: cfg.APIKey, + + APIKey: cfg.APIKey, + Token: cfg.Token, Transport: cfg.Transport, Logger: cfg.Logger, diff --git a/estransport/estransport.go b/estransport/estransport.go index 22416b4ea0..f6ebd74bda 100755 --- a/estransport/estransport.go +++ b/estransport/estransport.go @@ -40,7 +40,9 @@ type Config struct { URLs []*url.URL Username string Password string - APIKey string + + APIKey string + Token string Transport http.RoundTripper Logger Logger @@ -52,7 +54,9 @@ type Client struct { urls []*url.URL username string password string - apikey string + + apikey string + token string transport http.RoundTripper selector Selector @@ -72,7 +76,9 @@ func New(cfg Config) *Client { urls: cfg.URLs, username: cfg.Username, password: cfg.Password, - apikey: cfg.APIKey, + + apikey: cfg.APIKey, + token: cfg.Token, transport: cfg.Transport, selector: NewRoundRobinSelector(cfg.URLs...), @@ -167,6 +173,15 @@ func (c *Client) setAuthorization(u *url.URL, req *http.Request) *http.Request { return req } + if c.token != "" { + var b bytes.Buffer + b.Grow(len("Bearer ") + len(c.apikey)) + b.WriteString("Bearer ") + b.WriteString(c.token) + req.Header.Set("Authorization", b.String()) + return req + } + if c.username != "" && c.password != "" { req.SetBasicAuth(c.username, c.password) return req