| 
 | 1 | +package v2  | 
 | 2 | + | 
 | 3 | +import (  | 
 | 4 | +	"context"  | 
 | 5 | +	"fmt"  | 
 | 6 | +	"net/http"  | 
 | 7 | +)  | 
 | 8 | + | 
 | 9 | +const (  | 
 | 10 | +	AcceptPostureRiskCreatePath = "%s/api/cspm/v1/compliance/risk-acceptances"  | 
 | 11 | +	AcceptPostureRiskGetPath    = "%s/api/cspm/v1/compliance/risk-acceptances/%s"  | 
 | 12 | +	AcceptPostureRiskDelete     = "%s/api/cspm/v1/compliance/violations/revoke"  | 
 | 13 | +	AcceptPostureRiskUpdate     = "%s/api/cspm/v1/compliance/risk-acceptances/%s"  | 
 | 14 | +)  | 
 | 15 | + | 
 | 16 | +type PostureAcceptRiskInterface interface {  | 
 | 17 | +	Base  | 
 | 18 | +	SaveAcceptPostureRisk(ctx context.Context, p *AccepetPostureRiskRequest) (*AcceptPostureRiskResponse, string, error)  | 
 | 19 | +	GetAcceptancePostureRisk(ctx context.Context, id string) (*AcceptPostureRiskResponse, string, error)  | 
 | 20 | +	DeleteAcceptancePostureRisk(ctx context.Context, p *DeleteAcceptPostureRisk) error  | 
 | 21 | +	UpdateAcceptancePostureRisk(ctx context.Context, p *UpdateAccepetPostureRiskRequest) (*AcceptPostureRisk, string, error)  | 
 | 22 | +}  | 
 | 23 | + | 
 | 24 | +func (c *Client) SaveAcceptPostureRisk(ctx context.Context, p *AccepetPostureRiskRequest) (*AcceptPostureRiskResponse, string, error) {  | 
 | 25 | +	payload, err := Marshal(p)  | 
 | 26 | +	if err != nil {  | 
 | 27 | +		return nil, "", err  | 
 | 28 | +	}  | 
 | 29 | +	response, err := c.requester.Request(ctx, http.MethodPost, c.getPostureControlURL(AcceptPostureRiskCreatePath), payload)  | 
 | 30 | +	if err != nil {  | 
 | 31 | +		return nil, "", err  | 
 | 32 | +	}  | 
 | 33 | + | 
 | 34 | +	defer response.Body.Close()  | 
 | 35 | +	if response.StatusCode != http.StatusOK && response.StatusCode != http.StatusCreated {  | 
 | 36 | +		errStatus, err := c.ErrorAndStatusFromResponse(response)  | 
 | 37 | +		return nil, errStatus, err  | 
 | 38 | +	}  | 
 | 39 | +	resp, err := Unmarshal[AcceptPostureRiskResponse](response.Body)  | 
 | 40 | + | 
 | 41 | +	if err != nil {  | 
 | 42 | +		return nil, "", err  | 
 | 43 | +	}  | 
 | 44 | + | 
 | 45 | +	return &resp, "", nil  | 
 | 46 | +}  | 
 | 47 | + | 
 | 48 | +func (c *Client) GetAcceptancePostureRisk(ctx context.Context, id string) (*AcceptPostureRiskResponse, string, error) {  | 
 | 49 | +	response, err := c.requester.Request(ctx, http.MethodGet, fmt.Sprintf(AcceptPostureRiskGetPath, c.config.url, id), nil)  | 
 | 50 | +	if err != nil {  | 
 | 51 | +		return nil, "", err  | 
 | 52 | +	}  | 
 | 53 | +	defer response.Body.Close()  | 
 | 54 | + | 
 | 55 | +	if response.StatusCode != http.StatusOK {  | 
 | 56 | +		errStatus, err := c.ErrorAndStatusFromResponse(response)  | 
 | 57 | +		return nil, errStatus, err  | 
 | 58 | +	}  | 
 | 59 | + | 
 | 60 | +	wrapper, err := Unmarshal[AcceptPostureRiskResponse](response.Body)  | 
 | 61 | +	if err != nil {  | 
 | 62 | +		return nil, "", err  | 
 | 63 | +	}  | 
 | 64 | +	return &wrapper, "", nil  | 
 | 65 | +}  | 
 | 66 | + | 
 | 67 | +func (c *Client) DeleteAcceptancePostureRisk(ctx context.Context, p *DeleteAcceptPostureRisk) error {  | 
 | 68 | +	payload, err := Marshal(p)  | 
 | 69 | +	if err != nil {  | 
 | 70 | +		return err  | 
 | 71 | +	}  | 
 | 72 | + | 
 | 73 | +	response, err := c.requester.Request(ctx, http.MethodPost, fmt.Sprintf(AcceptPostureRiskDelete, c.config.url), payload)  | 
 | 74 | +	if err != nil {  | 
 | 75 | +		return err  | 
 | 76 | +	}  | 
 | 77 | +	defer response.Body.Close()  | 
 | 78 | + | 
 | 79 | +	if response.StatusCode != http.StatusNoContent && response.StatusCode != http.StatusOK && response.StatusCode != http.StatusNotFound {  | 
 | 80 | +		return c.ErrorFromResponse(response)  | 
 | 81 | +	}  | 
 | 82 | + | 
 | 83 | +	return nil  | 
 | 84 | +}  | 
 | 85 | + | 
 | 86 | +func (c *Client) UpdateAcceptancePostureRisk(ctx context.Context, p *UpdateAccepetPostureRiskRequest) (*AcceptPostureRisk, string, error) {  | 
 | 87 | +	payload, err := Marshal(p)  | 
 | 88 | +	if err != nil {  | 
 | 89 | +		return nil, "", err  | 
 | 90 | +	}  | 
 | 91 | +	response, err := c.requester.Request(ctx, http.MethodPatch, fmt.Sprintf(AcceptPostureRiskUpdate, c.config.url, p.AcceptanceID), payload)  | 
 | 92 | +	if err != nil {  | 
 | 93 | +		return nil, "", err  | 
 | 94 | +	}  | 
 | 95 | +	defer response.Body.Close()  | 
 | 96 | +	if response.StatusCode != http.StatusOK && response.StatusCode != http.StatusCreated {  | 
 | 97 | +		errStatus, err := c.ErrorAndStatusFromResponse(response)  | 
 | 98 | +		return nil, errStatus, err  | 
 | 99 | +	}  | 
 | 100 | +	resp, err := Unmarshal[AcceptPostureRiskResponse](response.Body)  | 
 | 101 | +	if err != nil {  | 
 | 102 | +		return nil, "", err  | 
 | 103 | +	}  | 
 | 104 | + | 
 | 105 | +	return &resp.Data, "", nil  | 
 | 106 | +}  | 
0 commit comments