commit 6d1ce85e966615f3886d8a2431b3e859d3008db6 from: Oliver Lowe date: Wed Jan 12 01:13:19 2022 UTC Merge get and getFilter methods Doing a GET without a query is the same as doing a GET with an empty query, so there's no point having 2 separate methods. commit - 60c115fb1c7683cea9553380eddaeb0033dd17bf commit + 6d1ce85e966615f3886d8a2431b3e859d3008db6 blob - 3707d01283233e4cd393c9b40e7c60481a44f64a blob + c1f083d5684fb65b0b47c15e9cd22f27e66ae76c --- http.go +++ http.go @@ -29,23 +29,16 @@ func NewRequest(method, url, username, password string return req, nil } -func (c *Client) get(path string) (*http.Response, error) { - url := "https://" + c.addr + versionPrefix + path - req, err := NewRequest(http.MethodGet, url, c.username, c.password, nil) - if err != nil { - return nil, err - } - return c.Do(req) -} - -func (c *Client) getFilter(path, filter string) (*http.Response, error) { +func (c *Client) get(path, filter string) (*http.Response, error) { u, err := url.Parse("https://" + c.addr + versionPrefix + path) if err != nil { return nil, err } - v := url.Values{} - v.Set("filter", filter) - u.RawQuery = v.Encode() + if filter != "" { + v := url.Values{} + v.Set("filter", filter) + u.RawQuery = v.Encode() + } req, err := NewRequest(http.MethodGet, u.String(), c.username, c.password, nil) if err != nil { return nil, err blob - 48e63b7551f4a6a4cc152c7f1718598485dade49 blob + 3e46109beb4e68f5866bb6e6edfe76e495207a58 --- icinga.go +++ icinga.go @@ -57,7 +57,7 @@ func Dial(addr, username, password string, client *htt } func (c *Client) Permissions() (response, error) { - resp, err := c.get("") + resp, err := c.get("", "") if err != nil { return response{}, err } blob - 9d5a0c2381a0143335a58d3df926952fba06f30b blob + 43a5c780fceabdefc8a7482d3f3f92244511a925 --- object.go +++ object.go @@ -36,20 +36,15 @@ func (c *Client) lookupObject(objpath string) (object, } func (c *Client) filterObjects(objpath, expr string) ([]object, error) { - var resp *http.Response - var err error - if expr == "" { - resp, err = c.get(objpath) - } else { - resp, err = c.getFilter(objpath, expr) - if resp.StatusCode == http.StatusNotFound { - return nil, ErrNoMatch - } - } + resp, err := c.get(objpath, expr) if err != nil { return nil, err } defer resp.Body.Close() + if expr != "" && resp.StatusCode == http.StatusNotFound { + return nil, ErrNoMatch + + } iresp, err := parseResponse(resp.Body) if err != nil { return nil, fmt.Errorf("parse response: %v", err)