commit 6d1ce85e966615f3886d8a2431b3e859d3008db6
parent 60c115fb1c7683cea9553380eddaeb0033dd17bf
Author: Oliver Lowe <o@olowe.co>
Date: Wed, 12 Jan 2022 08:57:31 +1100
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.
Diffstat:
3 files changed, 12 insertions(+), 24 deletions(-)
diff --git a/http.go b/http.go
@@ -29,23 +29,16 @@ func NewRequest(method, url, username, password string, body io.Reader) (*http.R
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
diff --git a/icinga.go b/icinga.go
@@ -57,7 +57,7 @@ func Dial(addr, username, password string, client *http.Client) (*Client, error)
}
func (c *Client) Permissions() (response, error) {
- resp, err := c.get("")
+ resp, err := c.get("", "")
if err != nil {
return response{}, err
}
diff --git a/object.go b/object.go
@@ -36,20 +36,15 @@ func (c *Client) lookupObject(objpath string) (object, error) {
}
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)