From adebfaf9683ba5087cca7849dd277080b257c42f Mon Sep 17 00:00:00 2001 From: Matias Melograno Date: Thu, 6 Nov 2025 11:55:42 -0300 Subject: [PATCH 1/2] added spec header and proxy header --- splitio/commitversion.go | 2 +- splitio/proxy/controllers/sdk_test.go | 2 +- splitio/proxy/proxy.go | 6 ++++++ splitio/proxy/proxy_test.go | 10 +++++++++- 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/splitio/commitversion.go b/splitio/commitversion.go index d1705cd1..0cd35ce1 100644 --- a/splitio/commitversion.go +++ b/splitio/commitversion.go @@ -5,4 +5,4 @@ This file is created automatically, please do not edit */ // CommitVersion is the version of the last commit previous to release -const CommitVersion = "35fdde3" +const CommitVersion = "4f19e34" diff --git a/splitio/proxy/controllers/sdk_test.go b/splitio/proxy/controllers/sdk_test.go index 78284069..1f454602 100644 --- a/splitio/proxy/controllers/sdk_test.go +++ b/splitio/proxy/controllers/sdk_test.go @@ -53,7 +53,7 @@ func TestSplitChangesImpressionsDisabled(t *testing.T) { &rbsStorage, flagsets.NewMatcher(false, nil), &largeSegmentStorageMock, - specs.FLAG_V1_2, + specs.FLAG_V1_3, ) controller.Register(group) diff --git a/splitio/proxy/proxy.go b/splitio/proxy/proxy.go index 8a76e94c..0bb98012 100644 --- a/splitio/proxy/proxy.go +++ b/splitio/proxy/proxy.go @@ -5,6 +5,7 @@ import ( "fmt" "net/http" + "github.com/splitio/split-synchronizer/v5/splitio" "github.com/splitio/split-synchronizer/v5/splitio/common/impressionlistener" "github.com/splitio/split-synchronizer/v5/splitio/proxy/controllers" "github.com/splitio/split-synchronizer/v5/splitio/proxy/controllers/middleware" @@ -145,6 +146,11 @@ func New(options *Options) *API { cacheableRouter.Use(options.Cache.Handle) cacheableRouter.Use(gzip.Gzip(gzip.DefaultCompression)) } + cacheableRouter.Use(func(c *gin.Context) { + c.Header("Harness-FME-Proxy-Version", splitio.Version) + c.Header("Harness-FME-Proxy-FlagSpec", options.SpecVersion) + c.Next() + }) authController.Register(cacheableRouter) sdkController.Register(cacheableRouter) eventsController.Register(regular, beacon) diff --git a/splitio/proxy/proxy_test.go b/splitio/proxy/proxy_test.go index a2d63f97..d14aa508 100644 --- a/splitio/proxy/proxy_test.go +++ b/splitio/proxy/proxy_test.go @@ -9,6 +9,7 @@ import ( "testing" "time" + "github.com/splitio/split-synchronizer/v5/splitio" ilmock "github.com/splitio/split-synchronizer/v5/splitio/common/impressionlistener/mocks" "github.com/splitio/split-synchronizer/v5/splitio/proxy/caching" "github.com/splitio/split-synchronizer/v5/splitio/proxy/storage" @@ -79,7 +80,8 @@ func TestSplitChangesEndpoints(t *testing.T) { assert.Equal(t, "split2", changes.Splits[0].Name) assert.False(t, changes.Splits[0].ImpressionsDisabled) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) - + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } func TestSplitChangesWithFlagsetsCaching(t *testing.T) { @@ -160,6 +162,8 @@ func TestSplitChangesWithFlagsetsCaching(t *testing.T) { assert.Equal(t, int64(1), changes.Till) assert.Equal(t, "split1", changes.Splits[0].Name) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } func TestSegmentChangesAndMySegmentsEndpoints(t *testing.T) { @@ -249,6 +253,8 @@ func TestSegmentChangesAndMySegmentsEndpoints(t *testing.T) { assert.Equal(t, 200, status) assert.Equal(t, []dtos.MySegmentDTO{}, segments) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } func TestMembershipEndpoint(t *testing.T) { @@ -284,6 +290,8 @@ func TestMembershipEndpoint(t *testing.T) { assert.Equal(t, 200, status) assert.Equal(t, expected, response) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } func makeOpts() *Options { From 3c02d2e9105af420957410cb2cc4f339e4fb3e87 Mon Sep 17 00:00:00 2001 From: Matias Melograno Date: Thu, 6 Nov 2025 15:57:57 -0300 Subject: [PATCH 2/2] renamed header --- splitio/proxy/proxy.go | 2 +- splitio/proxy/proxy_test.go | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/splitio/proxy/proxy.go b/splitio/proxy/proxy.go index 0bb98012..da56dc9a 100644 --- a/splitio/proxy/proxy.go +++ b/splitio/proxy/proxy.go @@ -148,7 +148,7 @@ func New(options *Options) *API { } cacheableRouter.Use(func(c *gin.Context) { c.Header("Harness-FME-Proxy-Version", splitio.Version) - c.Header("Harness-FME-Proxy-FlagSpec", options.SpecVersion) + c.Header("Harness-FME-FlagSpec", options.SpecVersion) c.Next() }) authController.Register(cacheableRouter) diff --git a/splitio/proxy/proxy_test.go b/splitio/proxy/proxy_test.go index d14aa508..bb39a674 100644 --- a/splitio/proxy/proxy_test.go +++ b/splitio/proxy/proxy_test.go @@ -80,7 +80,7 @@ func TestSplitChangesEndpoints(t *testing.T) { assert.Equal(t, "split2", changes.Splits[0].Name) assert.False(t, changes.Splits[0].ImpressionsDisabled) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) - assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-FlagSpec")) assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } @@ -162,7 +162,7 @@ func TestSplitChangesWithFlagsetsCaching(t *testing.T) { assert.Equal(t, int64(1), changes.Till) assert.Equal(t, "split1", changes.Splits[0].Name) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) - assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-FlagSpec")) assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } @@ -253,7 +253,7 @@ func TestSegmentChangesAndMySegmentsEndpoints(t *testing.T) { assert.Equal(t, 200, status) assert.Equal(t, []dtos.MySegmentDTO{}, segments) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) - assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-FlagSpec")) assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) } @@ -290,7 +290,7 @@ func TestMembershipEndpoint(t *testing.T) { assert.Equal(t, 200, status) assert.Equal(t, expected, response) assert.Equal(t, "application/json; charset=utf-8", headers.Get("Content-Type")) - assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-Proxy-FlagSpec")) + assert.Equal(t, opts.SpecVersion, headers.Get("Harness-FME-FlagSpec")) assert.Equal(t, splitio.Version, headers.Get("Harness-FME-Proxy-Version")) }