From c454725b52c64accf2175becb6e97f24ac2edd58 Mon Sep 17 00:00:00 2001 From: Kim Gustyr Date: Wed, 23 Oct 2024 14:43:20 +0100 Subject: [PATCH] chore: Bump major version, add evaluation context codegen to CI (#142) * chore: Bump major version, add evaluation context codegen to CI --- .github/workflows/go.yml | 3 +++ .github/workflows/lint.yml | 23 ----------------------- .pre-commit-config.yaml | 17 ++++------------- Makefile | 8 +++++++- client.go | 14 +++++++------- client_test.go | 19 ++++++++++++------- evaluationcontext.go | 6 +++--- evaluationcontext_static.go | 7 ++++--- flagengine/engine.go | 10 +++++----- flagengine/engine_test.go | 10 +++++----- flagengine/environments/models.go | 6 +++--- flagengine/features/models.go | 2 +- flagengine/features/models_test.go | 2 +- flagengine/flagengine_integration_test.go | 10 +++++----- flagengine/identities/models.go | 6 +++--- flagengine/projects/models.go | 4 ++-- flagengine/segments/evaluator.go | 6 +++--- flagengine/segments/evaluator_test.go | 10 +++++----- flagengine/segments/models.go | 4 ++-- flagengine/utils/fixtures/fixtures.go | 16 ++++++++-------- flagengine/utils/hashing_test.go | 2 +- flagengine/utils/time_test.go | 2 +- go.mod | 3 ++- go.sum | 2 ++ models.go | 4 ++-- offline_handler.go | 2 +- offline_handler_test.go | 2 +- utils.go | 5 ++++- 28 files changed, 97 insertions(+), 108 deletions(-) delete mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml index 91368cc..3466d52 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/go.yml @@ -30,6 +30,9 @@ jobs: with: submodules: recursive + - name: Build evaluation context struct + run: make generate-evaluation-context + - name: Get dependencies run: | go get -v -t -d ./... diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 23c6b89..0000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Lint -on: - push: - tags: - - v* - branches: - - main - pull_request: - -jobs: - golangci: - if: github.event.pull_request.draft == false - name: golangci-lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: stable - - name: golangci-lint - uses: golangci/golangci-lint-action@v6.0.1 - with: - version: latest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index db9e4bc..ba3a992 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,14 +1,5 @@ repos: - - repo: https://github.com/dnephin/pre-commit-golang - rev: v0.5.0 - - hooks: - - id: go-fmt - - id: go-vet - - id: go-imports - - id: golangci-lint - - id: go-build - - id: go-critic - - id: go-mod-tidy - - + - repo: https://github.com/golangci/golangci-lint + rev: v1.61.0 + hooks: + - id: golangci-lint diff --git a/Makefile b/Makefile index 2050b8b..62aea78 100644 --- a/Makefile +++ b/Makefile @@ -5,4 +5,10 @@ EVALUATION_CONTEXT_SCHEMA_URL ?= https://raw.githubusercontent.com/Flagsmith/fla .PHONY: generate-evaluation-context generate-evaluation-context: - npx quicktype ${EVALUATION_CONTEXT_SCHEMA_URL} --src-lang schema --lang go --package flagsmith --omit-empty --just-types-and-package > evaluationcontext.go + npx quicktype ${EVALUATION_CONTEXT_SCHEMA_URL} \ + --src-lang schema \ + --lang go \ + --package flagsmith \ + --omit-empty \ + --just-types-and-package \ + > evaluationcontext.go diff --git a/client.go b/client.go index 49485e2..9bd1e55 100644 --- a/client.go +++ b/client.go @@ -7,13 +7,13 @@ import ( "sync/atomic" "time" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments" "github.com/go-resty/resty/v2" - enginetraits "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" + enginetraits "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" ) type contextKey string @@ -117,7 +117,7 @@ func (c *Client) GetFlags(ctx context.Context, ec *EvaluationContext) (f Flags, if ec != nil { ctx = WithEvaluationContext(ctx, *ec) if ec.Identity != nil { - return c.GetIdentityFlags(ctx, ec.Identity.Identifier, mapIdentityEvaluationContextToTraits(*ec.Identity)) + return c.GetIdentityFlags(ctx, *ec.Identity.Identifier, mapIdentityEvaluationContextToTraits(*ec.Identity)) } } return c.GetEnvironmentFlags(ctx) @@ -263,7 +263,7 @@ func (c *Client) GetIdentityFlagsFromAPI(ctx context.Context, identifier string, idCtx := ec.Identity if idCtx != nil { // `Identifier` and `Traits` had been set by `GetFlags` earlier. - body.Transient = &idCtx.Transient + body.Transient = idCtx.Transient } } resp, err := req. diff --git a/client_test.go b/client_test.go index e8a9163..e449031 100644 --- a/client_test.go +++ b/client_test.go @@ -11,8 +11,8 @@ import ( "testing" "time" - flagsmith "github.com/Flagsmith/flagsmith-go-client/v3" - "github.com/Flagsmith/flagsmith-go-client/v3/fixtures" + flagsmith "github.com/Flagsmith/flagsmith-go-client/v4" + "github.com/Flagsmith/flagsmith-go-client/v4/fixtures" "github.com/stretchr/testify/assert" ) @@ -204,6 +204,8 @@ func TestGetFlags(t *testing.T) { func TestGetFlagsTransientIdentity(t *testing.T) { // Given + identifier := "transient" + transient := true ctx := context.Background() expectedRequestBody := `{"identifier":"transient","transient":true}` server := getTestHttpServer(t, "/api/v1/identities/", fixtures.EnvironmentAPIKey, &expectedRequestBody, fixtures.IdentityResponseJson) @@ -212,7 +214,7 @@ func TestGetFlagsTransientIdentity(t *testing.T) { // When client := flagsmith.NewClient(fixtures.EnvironmentAPIKey, flagsmith.WithBaseURL(server.URL+"/api/v1/")) - flags, err := client.GetFlags(ctx, &flagsmith.EvaluationContext{Identity: &flagsmith.IdentityEvaluationContext{Identifier: "transient", Transient: true}}) + flags, err := client.GetFlags(ctx, &flagsmith.EvaluationContext{Identity: &flagsmith.IdentityEvaluationContext{Identifier: &identifier, Transient: &transient}}) // Then assert.NoError(t, err) @@ -228,11 +230,13 @@ func TestGetFlagsTransientIdentity(t *testing.T) { func TestGetFlagsTransientTraits(t *testing.T) { // Given + identifier := "test_identity" + transient := true ctx := context.Background() expectedRequestBody := `{"identifier":"test_identity","traits":` + `[{"trait_key":"NullTrait","trait_value":null},` + `{"trait_key":"StringTrait","trait_value":"value"},` + - `{"trait_key":"TransientTrait","trait_value":"value","transient":true}],"transient":false}` + `{"trait_key":"TransientTrait","trait_value":"value","transient":true}]}` server := getTestHttpServer(t, "/api/v1/identities/", fixtures.EnvironmentAPIKey, &expectedRequestBody, fixtures.IdentityResponseJson) defer server.Close() @@ -243,13 +247,13 @@ func TestGetFlagsTransientTraits(t *testing.T) { ctx, &flagsmith.EvaluationContext{ Identity: &flagsmith.IdentityEvaluationContext{ - Identifier: "test_identity", + Identifier: &identifier, Traits: map[string]*flagsmith.TraitEvaluationContext{ "NullTrait": nil, "StringTrait": {Value: "value"}, "TransientTrait": { Value: "value", - Transient: true, + Transient: &transient, }, }, }, @@ -289,6 +293,7 @@ func TestGetFlagsEnvironmentEvaluationContextFlags(t *testing.T) { func TestGetFlagsEnvironmentEvaluationContextIdentity(t *testing.T) { // Given + identifier := "test_identity" ctx := context.Background() expectedEnvKey := "different" server := getTestHttpServer(t, "/api/v1/identities/", expectedEnvKey, nil, fixtures.IdentityResponseJson) @@ -301,7 +306,7 @@ func TestGetFlagsEnvironmentEvaluationContextIdentity(t *testing.T) { ctx, &flagsmith.EvaluationContext{ Environment: &flagsmith.EnvironmentEvaluationContext{APIKey: expectedEnvKey}, - Identity: &flagsmith.IdentityEvaluationContext{Identifier: "test_identity"}, + Identity: &flagsmith.IdentityEvaluationContext{Identifier: &identifier}, }) // Then diff --git a/evaluationcontext.go b/evaluationcontext.go index 0ce7776..0e30304 100644 --- a/evaluationcontext.go +++ b/evaluationcontext.go @@ -15,12 +15,12 @@ type FeatureEvaluationContext struct { } type IdentityEvaluationContext struct { - Identifier string `json:"identifier,omitempty"` + Identifier *string `json:"identifier,omitempty"` Traits map[string]*TraitEvaluationContext `json:"traits,omitempty"` - Transient bool `json:"transient,omitempty"` + Transient *bool `json:"transient,omitempty"` } type TraitEvaluationContext struct { - Transient bool `json:"transient,omitempty"` + Transient *bool `json:"transient,omitempty"` Value interface{} `json:"value"` } diff --git a/evaluationcontext_static.go b/evaluationcontext_static.go index ec1f356..fd00bfd 100644 --- a/evaluationcontext_static.go +++ b/evaluationcontext_static.go @@ -9,7 +9,7 @@ func getTraitEvaluationContext(v interface{}) TraitEvaluationContext { } func NewTraitEvaluationContext(value interface{}, transient bool) TraitEvaluationContext { - return TraitEvaluationContext{Value: value, Transient: transient} + return TraitEvaluationContext{Value: value, Transient: &transient} } func NewEvaluationContext(identifier string, traits map[string]interface{}) EvaluationContext { @@ -20,7 +20,7 @@ func NewEvaluationContext(identifier string, traits map[string]interface{}) Eval traitsCtx[tKey] = &tCtx } ec.Identity = &IdentityEvaluationContext{ - Identifier: identifier, + Identifier: &identifier, Traits: traitsCtx, } return ec @@ -28,6 +28,7 @@ func NewEvaluationContext(identifier string, traits map[string]interface{}) Eval func NewTransientEvaluationContext(identifier string, traits map[string]interface{}) EvaluationContext { ec := NewEvaluationContext(identifier, traits) - ec.Identity.Transient = true + var transient = true + ec.Identity.Transient = &transient return ec } diff --git a/flagengine/engine.go b/flagengine/engine.go index c992c06..3f28f7f 100644 --- a/flagengine/engine.go +++ b/flagengine/engine.go @@ -1,11 +1,11 @@ package flagengine import ( - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments" ) // GetEnvironmentFeatureStates returns a list of feature states for a given environment. diff --git a/flagengine/engine_test.go b/flagengine/engine_test.go index e6e2a33..2f9c1f9 100644 --- a/flagengine/engine_test.go +++ b/flagengine/engine_test.go @@ -3,11 +3,11 @@ package flagengine_test import ( "testing" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils/fixtures" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils/fixtures" "github.com/stretchr/testify/assert" ) diff --git a/flagengine/environments/models.go b/flagengine/environments/models.go index 3fe961b..578d999 100644 --- a/flagengine/environments/models.go +++ b/flagengine/environments/models.go @@ -1,9 +1,9 @@ package environments import ( - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/projects" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/projects" ) type EnvironmentModel struct { diff --git a/flagengine/features/models.go b/flagengine/features/models.go index b36ecbb..d7699b1 100644 --- a/flagengine/features/models.go +++ b/flagengine/features/models.go @@ -5,7 +5,7 @@ import ( "sort" "strconv" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" ) type FeatureModel struct { diff --git a/flagengine/features/models_test.go b/flagengine/features/models_test.go index fe359e7..56f250d 100644 --- a/flagengine/features/models_test.go +++ b/flagengine/features/models_test.go @@ -3,7 +3,7 @@ package features_test import ( "testing" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" "github.com/stretchr/testify/assert" ) diff --git a/flagengine/flagengine_integration_test.go b/flagengine/flagengine_integration_test.go index ea9df90..330702a 100644 --- a/flagengine/flagengine_integration_test.go +++ b/flagengine/flagengine_integration_test.go @@ -10,11 +10,11 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" ) const TestData = "./engine-test-data/data/environment_n9fbf9h3v4fFgH3U3ngWhb.json" diff --git a/flagengine/identities/models.go b/flagengine/identities/models.go index a9954ea..96e16ba 100644 --- a/flagengine/identities/models.go +++ b/flagengine/identities/models.go @@ -1,9 +1,9 @@ package identities import ( - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" ) type IdentityModel struct { diff --git a/flagengine/projects/models.go b/flagengine/projects/models.go index fcdf2e3..090814f 100644 --- a/flagengine/projects/models.go +++ b/flagengine/projects/models.go @@ -1,8 +1,8 @@ package projects import ( - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/organisations" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/organisations" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments" ) type ProjectModel struct { diff --git a/flagengine/segments/evaluator.go b/flagengine/segments/evaluator.go index 2bf772c..f0f2285 100644 --- a/flagengine/segments/evaluator.go +++ b/flagengine/segments/evaluator.go @@ -4,9 +4,9 @@ import ( "strconv" "strings" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" "github.com/blang/semver/v4" "golang.org/x/exp/slices" ) diff --git a/flagengine/segments/evaluator_test.go b/flagengine/segments/evaluator_test.go index 11111bf..9b18dc2 100644 --- a/flagengine/segments/evaluator_test.go +++ b/flagengine/segments/evaluator_test.go @@ -7,11 +7,11 @@ import ( "github.com/stretchr/testify/assert" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils/fixtures" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils/fixtures" ) const ( diff --git a/flagengine/segments/models.go b/flagengine/segments/models.go index bef57fc..4395612 100644 --- a/flagengine/segments/models.go +++ b/flagengine/segments/models.go @@ -6,8 +6,8 @@ import ( "strconv" "strings" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" ) type SegmentConditionModel struct { diff --git a/flagengine/utils/fixtures/fixtures.go b/flagengine/utils/fixtures/fixtures.go index bf5b8a7..61f278c 100644 --- a/flagengine/utils/fixtures/fixtures.go +++ b/flagengine/utils/fixtures/fixtures.go @@ -3,14 +3,14 @@ package fixtures import ( "time" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/organisations" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/projects" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/segments" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/organisations" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/projects" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/segments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" ) const ( diff --git a/flagengine/utils/hashing_test.go b/flagengine/utils/hashing_test.go index a3d71b3..adf62ee 100644 --- a/flagengine/utils/hashing_test.go +++ b/flagengine/utils/hashing_test.go @@ -9,7 +9,7 @@ import ( "github.com/google/uuid" "github.com/stretchr/testify/assert" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" ) func TestGetHashedPercentageForObjectIds(t *testing.T) { diff --git a/flagengine/utils/time_test.go b/flagengine/utils/time_test.go index edd67f2..3c2f00e 100644 --- a/flagengine/utils/time_test.go +++ b/flagengine/utils/time_test.go @@ -6,7 +6,7 @@ import ( "github.com/stretchr/testify/assert" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/utils" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/utils" ) func TestUnmarshal(t *testing.T) { diff --git a/go.mod b/go.mod index ed9421d..25708f0 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/Flagsmith/flagsmith-go-client/v3 +module github.com/Flagsmith/flagsmith-go-client/v4 go 1.22 @@ -16,6 +16,7 @@ require ( require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/elastic/go-json-schema-generate v0.0.0-20220519132038-c708d18d6ca2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/net v0.27.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index ff86d6d..7d98dad 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,8 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/elastic/go-json-schema-generate v0.0.0-20220519132038-c708d18d6ca2 h1:C8FTj5Y0BfGNSFyQI6V0HeATwKwTlLfU8qletYG7V8Y= +github.com/elastic/go-json-schema-generate v0.0.0-20220519132038-c708d18d6ca2/go.mod h1:w6t176CDaF2cZXwuQtFA5T+trYjvo5OYxLbBwAE7gxU= github.com/go-resty/resty/v2 v2.14.0 h1:/rhkzsAqGQkozwfKS5aFAbb6TyKd3zyFRWcdRXLPCAU= github.com/go-resty/resty/v2 v2.14.0/go.mod h1:IW6mekUOsElt9C7oWr0XRt9BNSD6D5rr9mhk6NjmNHg= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= diff --git a/models.go b/models.go index 490e547..1d4530c 100644 --- a/models.go +++ b/models.go @@ -4,9 +4,9 @@ import ( "encoding/json" "fmt" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/features" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/features" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/identities/traits" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/identities/traits" ) type Flag struct { diff --git a/offline_handler.go b/offline_handler.go index 3e56cf2..7071c55 100644 --- a/offline_handler.go +++ b/offline_handler.go @@ -4,7 +4,7 @@ import ( "encoding/json" "os" - "github.com/Flagsmith/flagsmith-go-client/v3/flagengine/environments" + "github.com/Flagsmith/flagsmith-go-client/v4/flagengine/environments" ) type OfflineHandler interface { diff --git a/offline_handler_test.go b/offline_handler_test.go index 549f744..1175ef0 100644 --- a/offline_handler_test.go +++ b/offline_handler_test.go @@ -3,7 +3,7 @@ package flagsmith_test import ( "testing" - flagsmith "github.com/Flagsmith/flagsmith-go-client/v3" + flagsmith "github.com/Flagsmith/flagsmith-go-client/v4" "github.com/stretchr/testify/assert" ) diff --git a/utils.go b/utils.go index 3408a56..b19fffc 100644 --- a/utils.go +++ b/utils.go @@ -16,7 +16,10 @@ func mapTraitEvaluationContextToTrait(tKey string, tCtx *TraitEvaluationContext) if tCtx == nil { return &Trait{TraitKey: tKey, TraitValue: nil} } - return &Trait{TraitKey: tKey, TraitValue: tCtx.Value, Transient: tCtx.Transient} + if tCtx.Transient == nil { + return &Trait{TraitKey: tKey, TraitValue: tCtx.Value} + } + return &Trait{TraitKey: tKey, TraitValue: tCtx.Value, Transient: *tCtx.Transient} } func sortedKeys[Map ~map[string]V, V any](m Map) []string {