From 589282a1895d2a2592acc8684a46e34133b1c88c Mon Sep 17 00:00:00 2001 From: Marin Bek Date: Thu, 13 Nov 2014 09:21:27 +0100 Subject: [PATCH] Unmarshal whole response into Raw field on Response for APIs that return fully dynamic format, like _mapping --- goes.go | 1 + goes_test.go | 9 +++++++++ structs.go | 2 ++ 3 files changed, 12 insertions(+) diff --git a/goes.go b/goes.go index d5dfbab..84d171a 100644 --- a/goes.go +++ b/goes.go @@ -352,6 +352,7 @@ func (req *Request) Run() (Response, error) { if err != nil { return Response{}, err } + json.Unmarshal(body, &esResp.Raw) } if req.api == "_bulk" && esResp.Errors { diff --git a/goes_test.go b/goes_test.go index 206c157..9a33f27 100644 --- a/goes_test.go +++ b/goes_test.go @@ -172,6 +172,7 @@ func (s *GoesTestSuite) TestDeleteIndexExistingIndex(c *C) { expectedResponse := Response{} expectedResponse.Acknowledged = true + resp.Raw = nil c.Assert(resp, DeepEquals, expectedResponse) } @@ -362,6 +363,7 @@ func (s *GoesTestSuite) TestIndexWithFieldsInStruct(c *C) { Version: 1, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) } @@ -426,6 +428,7 @@ func (s *GoesTestSuite) TestIndexIdDefined(c *C) { Version: 1, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) } @@ -495,6 +498,7 @@ func (s *GoesTestSuite) TestDelete(c *C) { // XXX : even after a DELETE the version number seems to be incremented Version: 2, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) response, err = conn.Delete(d, url.Values{}) @@ -508,6 +512,7 @@ func (s *GoesTestSuite) TestDelete(c *C) { // XXX : even after a DELETE the version number seems to be incremented Version: 3, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) } @@ -567,6 +572,7 @@ func (s *GoesTestSuite) TestDeleteByQuery(c *C) { Id: "", Version: 0, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) //should be 0 docs after delete by query @@ -613,6 +619,7 @@ func (s *GoesTestSuite) TestGet(c *C) { Source: source, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) fields := make(url.Values, 1) @@ -631,6 +638,7 @@ func (s *GoesTestSuite) TestGet(c *C) { }, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) } @@ -1070,6 +1078,7 @@ func (s *GoesTestSuite) TestUpdate(c *C) { Version: 1, } + response.Raw = nil c.Assert(response, DeepEquals, expectedResponse) // Now that we have an ordinary document indexed, try updating it diff --git a/structs.go b/structs.go index cfd043b..e397a9e 100644 --- a/structs.go +++ b/structs.go @@ -88,6 +88,8 @@ type Response struct { ScrollId string `json:"_scroll_id"` Aggregations map[string]Aggregation `json:"aggregations,omitempty"` + + Raw map[string]interface{} } // Represents an aggregation from response