func (c *Client) Query(req *search.SearchQuery) (*search.SearchResult, error) { sr, err := c.SearchRoot() if err != nil { return nil, err } url := sr + req.URLSuffix() body, err := json.MarshalIndent(req, "", "\t") if err != nil { return nil, err } hreq := c.newRequest("POST", url, bytes.NewReader(body)) hres, err := c.expect2XX(hreq) if err != nil { return nil, err } res := new(search.SearchResult) if err := httputil.DecodeJSON(hres, res); err != nil { return nil, err } return res, nil }
func (c *Client) Search(req *search.SearchQuery) (*search.SearchResult, error) { sr, err := c.SearchRoot() if err != nil { return nil, err } url := sr + req.URLSuffix() body, err := json.MarshalIndent(req, "", "\t") if err != nil { return nil, err } hreq := c.newRequest("POST", url, bytes.NewReader(body)) hres, err := c.doReqGated(hreq) if err != nil { return nil, err } defer hres.Body.Close() res := new(search.SearchResult) if err := json.NewDecoder(hres.Body).Decode(res); err != nil { return nil, err } return res, nil }