icinga

Icinga2 API client in Go
git clone https://git.olowe.co/icinga
Log | Files | Refs | README | LICENSE

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:
Mhttp.go | 19++++++-------------
Micinga.go | 2+-
Mobject.go | 15+++++----------
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)