Skip to content

Commit 527d1b7

Browse files
committed
refactor
1 parent 0a6c698 commit 527d1b7

File tree

2 files changed

+24
-31
lines changed

2 files changed

+24
-31
lines changed

client.go

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -144,17 +144,17 @@ func MustNewClient(apiKey string, options ...Option) *Client {
144144
// }
145145
func (c *Client) GetFlags(ctx context.Context, ec EvaluationContext) (f Flags, err error) {
146146
if ec.identifier != "" {
147-
if c.config.offlineMode && c.offlineHandler != nil || c.config.localEvaluation {
148-
f, err = c.getIdentityFlagsFromEnvironment(ec.identifier, ec.traits)
149-
} else {
150-
f, err = c.getIdentityFlagsFromAPI(ctx, ec.identifier, ec.traits)
151-
}
152-
if err != nil && c.defaultFlagHandler != nil {
153-
f = Flags{defaultFlagHandler: c.defaultFlagHandler}
154-
}
155-
return f, err
147+
f, err = c.GetIdentityFlags(ctx, ec.identifier, ec.traits)
148+
} else {
149+
f, err = c.GetEnvironmentFlags(ctx)
150+
}
151+
if err == nil {
152+
return f, nil
153+
} else if c.defaultFlagHandler != nil {
154+
return Flags{defaultFlagHandler: c.defaultFlagHandler}, nil
155+
} else {
156+
return Flags{}, errors.New("GetFlags failed and no default flag handler was provided")
156157
}
157-
return c.GetEnvironmentFlags(ctx)
158158
}
159159

160160
// UpdateEnvironment fetches the current environment state from the Flagsmith API. It is called periodically when using
@@ -223,30 +223,26 @@ func (c *Client) BulkIdentify(ctx context.Context, batch []*IdentityTraits) erro
223223

224224
// GetEnvironmentFlags evaluates and returns the feature flags, using the current environment as the evaluation context.
225225
//
226-
// Use [Client.GetFlags] to evaluate the flags for an identity.
226+
// Deprecated: Use [Client.GetFlags] instead.
227227
func (c *Client) GetEnvironmentFlags(ctx context.Context) (f Flags, err error) {
228228
if c.config.localEvaluation || c.config.offlineMode {
229-
if f, err = c.getEnvironmentFlagsFromEnvironment(); err == nil {
230-
return f, nil
231-
}
229+
f, err = c.getEnvironmentFlagsFromEnvironment()
232230
} else {
233-
if f, err = c.getEnvironmentFlagsFromAPI(ctx); err == nil {
234-
return f, nil
235-
}
236-
}
237-
if c.offlineHandler != nil {
238-
return c.getEnvironmentFlagsFromEnvironment()
239-
} else if c.defaultFlagHandler != nil {
240-
return Flags{defaultFlagHandler: c.defaultFlagHandler}, nil
231+
f, err = c.getEnvironmentFlagsFromAPI(ctx)
241232
}
242-
return Flags{}, &FlagsmithClientError{msg: fmt.Sprintf("Failed to fetch flags with error: %s", err)}
233+
return f, err
243234
}
244235

245236
// GetIdentityFlags evaluates and returns the flags for an identity.
246237
//
247238
// Deprecated: Use GetFlags instead.
248239
func (c *Client) GetIdentityFlags(ctx context.Context, identifier string, traits map[string]interface{}) (f Flags, err error) {
249-
return c.GetFlags(ctx, NewEvaluationContext(identifier, traits))
240+
if c.config.offlineMode && c.offlineHandler != nil || c.config.localEvaluation {
241+
f, err = c.getIdentityFlagsFromEnvironment(identifier, traits)
242+
} else {
243+
f, err = c.getIdentityFlagsFromAPI(ctx, identifier, traits)
244+
}
245+
return f, err
250246
}
251247

252248
// getEnvironmentFlagsFromAPI tries to contact the Flagsmith API to get the latest environment data.

client_test.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package flagsmith_test
33
import (
44
"context"
55
"encoding/json"
6-
"errors"
76
"fmt"
87
"io"
98
"net/http"
@@ -491,7 +490,7 @@ func TestDefaultHandlerIsUsedWhenTimeout(t *testing.T) {
491490
return flagsmith.Flag{}, nil
492491
}))
493492

494-
flags, err := client.GetEnvironmentFlags(ctx)
493+
flags, err := client.GetFlags(ctx, flagsmith.EvaluationContext{})
495494

496495
// Then
497496
assert.NoError(t, err)
@@ -513,7 +512,7 @@ func TestDefaultHandlerIsUsedWhenRequestFails(t *testing.T) {
513512
return flagsmith.Flag{}, nil
514513
}))
515514

516-
flags, err := client.GetEnvironmentFlags(ctx)
515+
flags, err := client.GetFlags(ctx, flagsmith.EvaluationContext{})
517516

518517
// Then
519518
assert.NoError(t, err)
@@ -532,10 +531,8 @@ func TestFlagsmithAPIErrorIsReturnedIfRequestFailsWithoutDefaultHandler(t *testi
532531
// When
533532
client := flagsmith.MustNewClient(fixtures.EnvironmentAPIKey, flagsmith.WithBaseURL(server.URL+"/api/v1/"))
534533

535-
_, err := client.GetEnvironmentFlags(ctx)
536-
assert.Error(t, err)
537-
var flagErr *flagsmith.FlagsmithClientError
538-
assert.True(t, errors.As(err, &flagErr))
534+
_, err := client.GetFlags(ctx, flagsmith.EvaluationContext{})
535+
assert.ErrorContains(t, err, "GetFlags failed and no default flag handler was provided")
539536
}
540537

541538
func TestGetIdentitySegmentsNoTraits(t *testing.T) {

0 commit comments

Comments
 (0)