@@ -5,20 +5,24 @@ import (
55
66 "github.com/sirupsen/logrus"
77
8- "gopkg.in/launchdarkly/go-sdk-common.v1/ldvalue"
9- ld "gopkg.in/launchdarkly/go-server-sdk.v4"
10- "gopkg.in/launchdarkly/go-server-sdk.v4/ldlog"
8+ "gopkg.in/launchdarkly/go-sdk-common.v2/ldlog"
9+ "gopkg.in/launchdarkly/go-sdk-common.v2/lduser"
10+ "gopkg.in/launchdarkly/go-sdk-common.v2/ldvalue"
11+ ld "gopkg.in/launchdarkly/go-server-sdk.v5"
12+ "gopkg.in/launchdarkly/go-server-sdk.v5/interfaces"
13+ "gopkg.in/launchdarkly/go-server-sdk.v5/interfaces/flagstate"
14+ "gopkg.in/launchdarkly/go-server-sdk.v5/ldcomponents"
1115)
1216
1317type Client interface {
1418 Enabled (key , userID string , attrs ... Attr ) bool
15- EnabledUser (key string , user ld .User ) bool
19+ EnabledUser (key string , user lduser .User ) bool
1620
1721 Variation (key , defaultVal , userID string , attrs ... Attr ) string
18- VariationUser (key string , defaultVal string , user ld .User ) string
22+ VariationUser (key string , defaultVal string , user lduser .User ) string
1923
2024 AllEnabledFlags (key string ) []string
21- AllEnabledFlagsUser (key string , user ld .User ) []string
25+ AllEnabledFlagsUser (key string , user lduser .User ) []string
2226}
2327
2428type ldClient struct {
@@ -30,27 +34,25 @@ type ldClient struct {
3034var _ Client = & ldClient {}
3135
3236func NewClient (cfg * Config , logger logrus.FieldLogger ) (Client , error ) {
33- config := ld .DefaultConfig
37+ config := ld.Config {}
3438
3539 if ! cfg .Enabled {
3640 config .Offline = true
3741 }
3842
3943 if cfg .updateProcessorFactory != nil {
40- config .UpdateProcessorFactory = cfg .updateProcessorFactory
41- config .SendEvents = false
44+ config .DataSource = cfg .updateProcessorFactory
45+ config .Events = ldcomponents . NoEvents ()
4246 }
4347
44- configureLogger ( & config .Loggers , logger )
48+ config .Logging = configureLogger ( logger )
4549
4650 if cfg .RelayHost != "" {
47- config .BaseUri = cfg .RelayHost
48- config .StreamUri = cfg .RelayHost
49- config .EventsUri = cfg .RelayHost
51+ config .ServiceEndpoints = ldcomponents .RelayProxyEndpoints (cfg .RelayHost )
5052 }
5153
5254 if cfg .DisableEvents {
53- config .SendEvents = false
55+ config .Events = ldcomponents . NoEvents ()
5456 }
5557
5658 inner , err := ld .MakeCustomClient (cfg .Key , config , cfg .RequestTimeout .Duration )
@@ -69,7 +71,7 @@ func (c *ldClient) Enabled(key string, userID string, attrs ...Attr) bool {
6971 return c .EnabledUser (key , c .userWithAttrs (userID , attrs ))
7072}
7173
72- func (c * ldClient ) EnabledUser (key string , user ld .User ) bool {
74+ func (c * ldClient ) EnabledUser (key string , user lduser .User ) bool {
7375 res , err := c .BoolVariation (key , user , false )
7476 if err != nil {
7577 c .log .WithError (err ).WithField ("key" , key ).Error ("Failed to load feature flag" )
@@ -81,7 +83,7 @@ func (c *ldClient) Variation(key, defaultVal, userID string, attrs ...Attr) stri
8183 return c .VariationUser (key , defaultVal , c .userWithAttrs (userID , attrs ))
8284}
8385
84- func (c * ldClient ) VariationUser (key string , defaultVal string , user ld .User ) string {
86+ func (c * ldClient ) VariationUser (key string , defaultVal string , user lduser .User ) string {
8587 res , err := c .StringVariation (key , user , defaultVal )
8688 if err != nil {
8789 c .log .WithError (err ).WithField ("key" , key ).Error ("Failed to load feature flag" )
@@ -90,28 +92,25 @@ func (c *ldClient) VariationUser(key string, defaultVal string, user ld.User) st
9092}
9193
9294func (c * ldClient ) AllEnabledFlags (key string ) []string {
93- return c .AllEnabledFlagsUser (key , ld .NewUser (key ))
95+ return c .AllEnabledFlagsUser (key , lduser .NewUser (key ))
9496}
9597
96- func (c * ldClient ) AllEnabledFlagsUser (key string , user ld .User ) []string {
97- res := c .AllFlagsState (user , ld . DetailsOnlyForTrackedFlags )
98+ func (c * ldClient ) AllEnabledFlagsUser (key string , user lduser .User ) []string {
99+ res := c .AllFlagsState (user , flagstate . OptionDetailsOnlyForTrackedFlags () )
98100 flagMap := res .ToValuesMap ()
99101
100102 var flags []string
101103 for flag , value := range flagMap {
102- switch value .(type ) {
103- case bool :
104- if value == true {
105- flags = append (flags , flag )
106- }
104+ if value .BoolValue () {
105+ flags = append (flags , flag )
107106 }
108107 }
109108
110109 return flags
111110}
112111
113- func (c * ldClient ) userWithAttrs (id string , attrs []Attr ) ld .User {
114- b := ld .NewUserBuilder (id )
112+ func (c * ldClient ) userWithAttrs (id string , attrs []Attr ) lduser .User {
113+ b := lduser .NewUserBuilder (id )
115114 for _ , attr := range c .defaultAttrs {
116115 b .Custom (attr .Name , attr .Value )
117116 }
@@ -130,18 +129,28 @@ func StringAttr(name, value string) Attr {
130129 return Attr {Name : name , Value : ldvalue .String (value )}
131130}
132131
133- func configureLogger (ldLogger * ldlog. Loggers , log logrus.FieldLogger ) {
132+ func configureLogger (log logrus.FieldLogger ) interfaces. LoggingConfigurationFactory {
134133 if log == nil {
135134 l := logrus .New ()
136135 l .SetOutput (ioutil .Discard )
137136 log = l
138137 }
139138 log = log .WithField ("component" , "launch_darkly" )
140139
141- ldLogger .SetBaseLoggerForLevel (ldlog .Debug , & wrapLog {log .Debugln , log .Debugf })
142- ldLogger .SetBaseLoggerForLevel (ldlog .Info , & wrapLog {log .Infoln , log .Infof })
143- ldLogger .SetBaseLoggerForLevel (ldlog .Warn , & wrapLog {log .Warnln , log .Warnf })
144- ldLogger .SetBaseLoggerForLevel (ldlog .Error , & wrapLog {log .Errorln , log .Errorf })
140+ return & logCreator {log : log }
141+ }
142+
143+ type logCreator struct {
144+ log logrus.FieldLogger
145+ }
146+
147+ func (c * logCreator ) CreateLoggingConfiguration (b interfaces.BasicConfiguration ) (interfaces.LoggingConfiguration , error ) {
148+ logger := ldlog .NewDefaultLoggers ()
149+ logger .SetBaseLoggerForLevel (ldlog .Debug , & wrapLog {c .log .Debugln , c .log .Debugf })
150+ logger .SetBaseLoggerForLevel (ldlog .Info , & wrapLog {c .log .Infoln , c .log .Infof })
151+ logger .SetBaseLoggerForLevel (ldlog .Warn , & wrapLog {c .log .Warnln , c .log .Warnf })
152+ logger .SetBaseLoggerForLevel (ldlog .Error , & wrapLog {c .log .Errorln , c .log .Errorf })
153+ return ldcomponents .Logging ().Loggers (logger ).CreateLoggingConfiguration (b )
145154}
146155
147156type wrapLog struct {
0 commit comments