Commit Diff


commit - fc8956331f70b23ffe89c8307de77bbc0ecccb39
commit + 60c115fb1c7683cea9553380eddaeb0033dd17bf
blob - 6a3c6313b97f01ce8acaec5a60fe3dda545aaa67
blob + 4cf94afd9784ee9e129e44fc674ca65474ae77d8
--- host.go
+++ host.go
@@ -71,7 +71,7 @@ func (h Host) MarshalJSON() ([]byte, error) {
 
 // Hosts returns all Hosts in the Icinga2 configuration.
 func (c *Client) Hosts() ([]Host, error) {
-	objects, err := c.allObjects("/objects/hosts")
+	objects, err := c.filterObjects("/objects/hosts", "")
 	if err != nil {
 		return nil, fmt.Errorf("get all hosts: %w", err)
 	}
blob - 8eab274f60264d83154651d4f6b979dbfe720fd7
blob + 9d5a0c2381a0143335a58d3df926952fba06f30b
--- object.go
+++ object.go
@@ -35,35 +35,24 @@ func (c *Client) lookupObject(objpath string) (object,
 	return objectFromLookup(iresp)
 }
 
-func (c *Client) allObjects(objpath string) ([]object, error) {
-	resp, err := c.get(objpath)
-	if err != nil {
-		return nil, err
-	}
-	defer resp.Body.Close()
-	iresp, err := parseResponse(resp.Body)
-	if err != nil {
-		return nil, err
-	} else if iresp.Error != nil {
-		return nil, iresp.Error
-	} else if resp.StatusCode != http.StatusOK {
-		return nil, errors.New(resp.Status)
-	}
-	return iresp.Results, nil
-}
-
 func (c *Client) filterObjects(objpath, expr string) ([]object, error) {
-	resp, err := c.getFilter(objpath, expr)
+	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
+		}
+	}
 	if err != nil {
 		return nil, err
 	}
 	defer resp.Body.Close()
-	if resp.StatusCode == http.StatusNotFound {
-		return nil, ErrNoMatch
-	}
 	iresp, err := parseResponse(resp.Body)
 	if err != nil {
-		return nil, err
+		return nil, fmt.Errorf("parse response: %v", err)
 	} else if iresp.Error != nil {
 		return nil, iresp.Error
 	} else if resp.StatusCode != http.StatusOK {
blob - 3a95a2a727cb7f5b20f7c920e4a44f4a2ba5fc19
blob + 1ad4fa1f9efbf7d447b2dbac6ea29dbda6992300
--- user.go
+++ user.go
@@ -49,7 +49,7 @@ func (u User) attrs() map[string]interface{} {
 }
 
 func (c *Client) Users() ([]User, error) {
-	objects, err := c.allObjects("/objects/users")
+	objects, err := c.filterObjects("/objects/users", "")
 	if err != nil {
 		return nil, fmt.Errorf("get all users: %w", err)
 	}