Skip curl output when using automatic versioning and reading (#858)

This makes it so that the actual output is the update/delete.

Fixes #856
This commit is contained in:
Jeff Mitchell authored and GitHub committed 2021-01-08 17:30:41 -05:00
1 parent 31ece74a92
commit 9de928318d
29 files changed
+228 -49

No files matched your search

+5 -5
View File
@@ -176,7 +176,7 @@ func (c *Client) Read(ctx context.Context, groupId string, opt ...Option) (*Grou
req.URL.RawQuery = q.Encode()
}
resp, err := c.client.Do(req)
resp, err := c.client.Do(req, apiOpts...)
if err != nil {
return nil, fmt.Errorf("error performing client request during Read call: %w", err)
}
@@ -208,7 +208,7 @@ func (c *Client) Update(ctx context.Context, groupId string, version uint32, opt
if !opts.withAutomaticVersioning {
return nil, errors.New("zero version number passed into Update request and automatic versioning not specified")
}
existingTarget, existingErr := c.Read(ctx, groupId, opt...)
existingTarget, existingErr := c.Read(ctx, groupId, append([]Option{WithSkipCurlOutput(true)}, opt...)...)
if existingErr != nil {
if api.AsServerError(existingErr) != nil {
return nil, fmt.Errorf("error from controller when performing initial check-and-set read: %w", existingErr)
@@ -357,7 +357,7 @@ func (c *Client) AddMembers(ctx context.Context, groupId string, version uint32,
if !opts.withAutomaticVersioning {
return nil, errors.New("zero version number passed into AddMembers request")
}
existingTarget, existingErr := c.Read(ctx, groupId, opt...)
existingTarget, existingErr := c.Read(ctx, groupId, append([]Option{WithSkipCurlOutput(true)}, opt...)...)
if existingErr != nil {
if api.AsServerError(existingErr) != nil {
return nil, fmt.Errorf("error from controller when performing initial check-and-set read: %w", existingErr)
@@ -422,7 +422,7 @@ func (c *Client) SetMembers(ctx context.Context, groupId string, version uint32,
if !opts.withAutomaticVersioning {
return nil, errors.New("zero version number passed into SetMembers request")
}
existingTarget, existingErr := c.Read(ctx, groupId, opt...)
existingTarget, existingErr := c.Read(ctx, groupId, append([]Option{WithSkipCurlOutput(true)}, opt...)...)
if existingErr != nil {
if api.AsServerError(existingErr) != nil {
return nil, fmt.Errorf("error from controller when performing initial check-and-set read: %w", existingErr)
@@ -489,7 +489,7 @@ func (c *Client) RemoveMembers(ctx context.Context, groupId string, version uint
if !opts.withAutomaticVersioning {
return nil, errors.New("zero version number passed into RemoveMembers request")
}
existingTarget, existingErr := c.Read(ctx, groupId, opt...)
existingTarget, existingErr := c.Read(ctx, groupId, append([]Option{WithSkipCurlOutput(true)}, opt...)...)
if existingErr != nil {
if api.AsServerError(existingErr) != nil {
return nil, fmt.Errorf("error from controller when performing initial check-and-set read: %w", existingErr)
+12
View File
@@ -17,6 +17,7 @@ type options struct {
postMap map[string]interface{}
queryMap map[string]string
withAutomaticVersioning bool
withSkipCurlOutput bool
}
func getDefaultOptions() options {
@@ -32,6 +33,9 @@ func getOpts(opt ...Option) (options, []api.Option) {
o(&opts)
}
var apiOpts []api.Option
if opts.withSkipCurlOutput {
apiOpts = append(apiOpts, api.WithSkipCurlOutput(true))
}
return opts, apiOpts
}
@@ -45,6 +49,14 @@ func WithAutomaticVersioning(enable bool) Option {
}
}
// WithSkipCurlOutput tells the API to not use the current call for cURL output.
// Useful for when we need to look up versions.
func WithSkipCurlOutput(skip bool) Option {
return func(o *options) {
o.withSkipCurlOutput = true
}
}
func WithDescription(inDescription string) Option {
return func(o *options) {
o.postMap["description"] = inDescription