diff --git a/goes.go b/goes.go index 5ff3d1c..c51239b 100644 --- a/goes.go +++ b/goes.go @@ -34,7 +34,7 @@ func (err *SearchError) Error() string { // This function is pretty useless for now but might be useful in a near future // if wee need more features like connection pooling or load balancing. func NewClient(host string, port string) *Client { - return &Client{host, port, http.DefaultClient, ""} + return &Client{host, port, http.DefaultClient, "", "", ""} } // WithHTTPClient sets the http.Client to be used with the connection. Returns the original client. @@ -585,6 +585,11 @@ func (c *Client) DoRaw(r Requester) ([]byte, uint64, error) { return nil, 0, err } c.replaceHost(req) + + if c.AuthUsername != "" { + req.SetBasicAuth(c.AuthUsername, c.AuthPassword) + } + return c.doRequest(req) } @@ -596,6 +601,10 @@ func (c *Client) Do(r Requester) (*Response, error) { } c.replaceHost(req) + if c.AuthUsername != "" { + req.SetBasicAuth(c.AuthUsername, c.AuthPassword) + } + body, statusCode, err := c.doRequest(req) esResp := &Response{Status: statusCode} diff --git a/request.go b/request.go index 9886865..45f39ae 100644 --- a/request.go +++ b/request.go @@ -43,6 +43,12 @@ type Request struct { // Used for the id field when indexing a document ID string + + // Auth username + AuthUsername string + + // Auth password + AuthPassword string } // URL builds a URL for a Request diff --git a/structs.go b/structs.go index 75cdc5d..ef7ecd5 100644 --- a/structs.go +++ b/structs.go @@ -23,6 +23,12 @@ type Client struct { // Detected version of ES version string + + // user name for http basic auth + AuthUsername string `json:"username"` + + // pass word for http basic auth + AuthPassword string `json:"password"` } // Response holds an elasticsearch response