From bf973947255cae17adf4764301d2fe817dc9f6ce Mon Sep 17 00:00:00 2001 From: ElectroNafta Date: Thu, 26 Jun 2025 17:11:58 +0200 Subject: [PATCH] feat(BRIDGE-278): additional query parameter for feature flag route corresponding to stickiness constraint --- client_features.go | 5 +++-- manager_features.go | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/client_features.go b/client_features.go index d41a3b8..6d57c53 100644 --- a/client_features.go +++ b/client_features.go @@ -4,13 +4,14 @@ import ( "context" "github.com/go-resty/resty/v2" + "github.com/google/uuid" ) -func (c *Client) GetFeatures(ctx context.Context) (FeatureFlagResult, error) { +func (c *Client) GetFeatures(ctx context.Context, stickyKey uuid.UUID) (FeatureFlagResult, error) { res := FeatureFlagResult{} if err := c.do(ctx, func(r *resty.Request) (*resty.Response, error) { - return r.SetResult(&res).Get("/feature/v2/frontend") + return r.SetResult(&res).Get(getFeatureFlagEndpoint(stickyKey)) }); err != nil { return FeatureFlagResult{}, err } diff --git a/manager_features.go b/manager_features.go index 7e8f186..1730a38 100644 --- a/manager_features.go +++ b/manager_features.go @@ -2,6 +2,10 @@ package proton import ( "context" + "fmt" + "net/url" + + "github.com/google/uuid" ) type FeatureFlagResult struct { @@ -14,10 +18,17 @@ type FeatureToggle struct { Enabled bool `json:"enabled"` } -func (m *Manager) GetFeatures(ctx context.Context) (FeatureFlagResult, error) { +func getFeatureFlagEndpoint(stickyKey uuid.UUID) string { + params := url.Values{} + params.Set("bridgeStickyKey", stickyKey.String()) + path := fmt.Sprintf("/feature/v2/frontend?%s", params.Encode()) + return path +} + +func (m *Manager) GetFeatures(ctx context.Context, stickyKey uuid.UUID) (FeatureFlagResult, error) { responseData := FeatureFlagResult{} - _, err := m.r(ctx).SetResult(&responseData).Get("/feature/v2/frontend") + _, err := m.r(ctx).SetResult(&responseData).Get(getFeatureFlagEndpoint(stickyKey)) if err != nil { return FeatureFlagResult{}, err }