From da996178825f2d7455c50df8084492a63448bb5d Mon Sep 17 00:00:00 2001 From: Iain Steers Date: Thu, 1 Oct 2020 19:14:18 -0400 Subject: [PATCH] Add DeleteHost func to service pkg (#2312) --- server/service/client_hosts.go | 36 ++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/server/service/client_hosts.go b/server/service/client_hosts.go index 7823bd6f36..1ae5a239e5 100644 --- a/server/service/client_hosts.go +++ b/server/service/client_hosts.go @@ -2,6 +2,7 @@ package service import ( "encoding/json" + "fmt" "net/http" "github.com/pkg/errors" @@ -61,3 +62,38 @@ func (c *Client) HostByIdentifier(identifier string) (*HostResponse, error) { return responseBody.Host, nil } + +// DeleteHost deletes the host with the matching id. +func (c *Client) DeleteHost(id uint) error { + verb := "DELETE" + path := fmt.Sprintf("/api/v1/kolide/hosts/%d", id) + response, err := c.AuthenticatedDo(verb, path, nil) + if err != nil { + return errors.Wrapf(err, "%s %s", verb, path) + } + defer response.Body.Close() + + switch response.StatusCode { + case http.StatusNotFound: + return notFoundErr{} + } + if response.StatusCode != http.StatusOK { + return errors.Errorf( + "delete host received status %d %s", + response.StatusCode, + extractServerErrorText(response.Body), + ) + } + + var responseBody deleteHostResponse + err = json.NewDecoder(response.Body).Decode(&responseBody) + if err != nil { + return errors.Wrap(err, "decode delete host response") + } + + if responseBody.Err != nil { + return errors.Errorf("delete host: %s", responseBody.Err) + } + + return nil +}