From 5e7640efd0ad26a7f675d47bb5fcd1deec2ee458 Mon Sep 17 00:00:00 2001 From: Simon Esposito Date: Fri, 21 Feb 2025 14:40:28 +0000 Subject: [PATCH] Allow Satori FlagsList to return default flags. (#1328) If FlagsList identity is empty string, use Satori key to set basic auth header instead of generating auth token and return all default flags. --- CHANGELOG.md | 1 + internal/satori/satori.go | 16 ++++++++++------ server/runtime_javascript_nakama.go | 2 +- server/runtime_lua_nakama.go | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54a45e723..04c830207 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr ### Changed - Change FB Limited Login validation Keys URL. - Update FB Graph API to v22. +- Enable Satori FlagsList to return all default flags. ### Fixed - Fix chat message listing pagination issue. diff --git a/internal/satori/satori.go b/internal/satori/satori.go index f1fcd51fa..fbc00319a 100644 --- a/internal/satori/satori.go +++ b/internal/satori/satori.go @@ -593,7 +593,7 @@ type flagCacheEntry struct { // @group satori // @summary List flags. // @param ctx(type=context.Context) The context object represents information about the server and requester. -// @param id(type=string) The identifier of the identity. +// @param id(type=string) The identifier of the identity. Set to empty string to fetch all default flag values. // @param names(type=[]string, optional=true, default=[]) Optional list of flag names to filter. // @return flags(*runtime.FlagList) The flag list. // @return error(error) An optional error value if an error occurred. @@ -609,16 +609,20 @@ func (s *SatoriClient) FlagsList(ctx context.Context, id string, names ...string if !found { url := s.url.String() + "/v1/flag" - sessionToken, err := s.generateToken(ctx, id) + req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { return nil, err } - req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) - if err != nil { - return nil, err + if id != "" { + sessionToken, err := s.generateToken(ctx, id) + if err != nil { + return nil, err + } + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", sessionToken)) + } else { + req.SetBasicAuth(s.apiKey, "") } - req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", sessionToken)) if len(names) > 0 { q := req.URL.Query() diff --git a/server/runtime_javascript_nakama.go b/server/runtime_javascript_nakama.go index b505e85ee..a3e51f263 100644 --- a/server/runtime_javascript_nakama.go +++ b/server/runtime_javascript_nakama.go @@ -9131,7 +9131,7 @@ func (n *RuntimeJavascriptNakamaModule) satoriExperimentsList(r *goja.Runtime) f // @group satori // @summary List flags. -// @param id(type=string) The identifier of the identity. +// @param id(type=string) The identifier of the identity. Set to empty string to fetch all default flag values. // @param names(type=string[], optional=true, default=[]) Optional list of flag names to filter. // @return flags(*nkruntime.Flag[]) The flag list. // @return error(error) An optional error value if an error occurred. diff --git a/server/runtime_lua_nakama.go b/server/runtime_lua_nakama.go index 2e9f0881d..3f97eb8ee 100644 --- a/server/runtime_lua_nakama.go +++ b/server/runtime_lua_nakama.go @@ -11220,7 +11220,7 @@ func (n *RuntimeLuaNakamaModule) satoriExperimentsList(l *lua.LState) int { // @group satori // @summary List flags. -// @param id(type=string) The identifier of the identity. +// @param id(type=string) The identifier of the identity. Set to empty string to fetch all default flag values. // @param names(type=table, optional=true, default=[]) Optional list of flag names to filter. // @return flags(table) The flag list. // @return error(error) An optional error value if an error occurred.