From 9e533912cdff1375301102493817b32d176e5ae1 Mon Sep 17 00:00:00 2001 From: Damian Debkowski Date: Fri, 12 Jan 2024 14:29:05 -0800 Subject: [PATCH] feat(api): session recording reapply storage policy --- api/sessionrecordings/custom.go | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/api/sessionrecordings/custom.go b/api/sessionrecordings/custom.go index 3afeaa0d7..758051a82 100644 --- a/api/sessionrecordings/custom.go +++ b/api/sessionrecordings/custom.go @@ -57,3 +57,45 @@ func (c *Client) Download(ctx context.Context, contentId string, opt ...Option) } return resp.HttpResponse().Body, nil } + +// ReApplyStoragePolicy will reapply a storage policy to a session recording. +func (c *Client) ReApplyStoragePolicy(ctx context.Context, contentId string, opt ...Option) (*SessionRecordingReadResult, error) { + switch { + case contentId == "": + return nil, fmt.Errorf("empty content id value passed into download request") + case c.client == nil: + return nil, fmt.Errorf("nil client") + } + + opts, apiOpts := getOpts(opt...) + + req, err := c.client.NewRequest(ctx, "POST", "session-recordings/"+url.PathEscape(contentId)+":reapply-storage-policy", nil, apiOpts...) + if err != nil { + return nil, fmt.Errorf("error creating reapply storage policy request: %w", err) + } + + if len(opts.queryMap) > 0 { + q := url.Values{} + for k, v := range opts.queryMap { + q.Add(k, v) + } + req.URL.RawQuery = q.Encode() + } + + resp, err := c.client.Do(req) + if err != nil { + return nil, fmt.Errorf("error performing client request during ReApplyStoragePolicy call: %w", err) + } + + target := new(SessionRecordingReadResult) + target.Item = new(SessionRecording) + apiErr, err := resp.Decode(target.Item) + if err != nil { + return nil, fmt.Errorf("error decoding ReApplyStoragePolicy response: %w", err) + } + if apiErr != nil { + return nil, apiErr + } + target.response = resp + return target, nil +}