mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-25 03:36:41 +00:00
Fixes panic occurring when body is nil (this usually happens when connections is refused) due to lack of nil check by centralizing response.Body.Close() behavior.
93 lines
2.7 KiB
Go
93 lines
2.7 KiB
Go
package rest
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
|
|
"github.com/netbirdio/netbird/management/server/http/api"
|
|
)
|
|
|
|
// PostureChecksAPI APIs for PostureChecks, do not use directly
|
|
type PostureChecksAPI struct {
|
|
c *Client
|
|
}
|
|
|
|
// List list all posture checks
|
|
// See more: https://docs.netbird.io/api/resources/posture-checks#list-all-posture-checks
|
|
func (a *PostureChecksAPI) List(ctx context.Context) ([]api.PostureCheck, error) {
|
|
resp, err := a.c.newRequest(ctx, "GET", "/api/posture-checks", nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp.Body != nil {
|
|
defer resp.Body.Close()
|
|
}
|
|
ret, err := parseResponse[[]api.PostureCheck](resp)
|
|
return ret, err
|
|
}
|
|
|
|
// Get get posture check info
|
|
// See more: https://docs.netbird.io/api/resources/posture-checks#retrieve-a-posture-check
|
|
func (a *PostureChecksAPI) Get(ctx context.Context, postureCheckID string) (*api.PostureCheck, error) {
|
|
resp, err := a.c.newRequest(ctx, "GET", "/api/posture-checks/"+postureCheckID, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp.Body != nil {
|
|
defer resp.Body.Close()
|
|
}
|
|
ret, err := parseResponse[api.PostureCheck](resp)
|
|
return &ret, err
|
|
}
|
|
|
|
// Create create new posture check
|
|
// See more: https://docs.netbird.io/api/resources/posture-checks#create-a-posture-check
|
|
func (a *PostureChecksAPI) Create(ctx context.Context, request api.PostApiPostureChecksJSONRequestBody) (*api.PostureCheck, error) {
|
|
requestBytes, err := json.Marshal(request)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
resp, err := a.c.newRequest(ctx, "POST", "/api/posture-checks", bytes.NewReader(requestBytes))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp.Body != nil {
|
|
defer resp.Body.Close()
|
|
}
|
|
ret, err := parseResponse[api.PostureCheck](resp)
|
|
return &ret, err
|
|
}
|
|
|
|
// Update update posture check info
|
|
// See more: https://docs.netbird.io/api/resources/posture-checks#update-a-posture-check
|
|
func (a *PostureChecksAPI) Update(ctx context.Context, postureCheckID string, request api.PutApiPostureChecksPostureCheckIdJSONRequestBody) (*api.PostureCheck, error) {
|
|
requestBytes, err := json.Marshal(request)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
resp, err := a.c.newRequest(ctx, "PUT", "/api/posture-checks/"+postureCheckID, bytes.NewReader(requestBytes))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if resp.Body != nil {
|
|
defer resp.Body.Close()
|
|
}
|
|
ret, err := parseResponse[api.PostureCheck](resp)
|
|
return &ret, err
|
|
}
|
|
|
|
// Delete delete posture check
|
|
// See more: https://docs.netbird.io/api/resources/posture-checks#delete-a-posture-check
|
|
func (a *PostureChecksAPI) Delete(ctx context.Context, postureCheckID string) error {
|
|
resp, err := a.c.newRequest(ctx, "DELETE", "/api/posture-checks/"+postureCheckID, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if resp.Body != nil {
|
|
defer resp.Body.Close()
|
|
}
|
|
|
|
return nil
|
|
}
|