@@ -5,20 +5,24 @@ import (
5
5
6
6
"github.com/sirupsen/logrus"
7
7
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"
11
15
)
12
16
13
17
type Client interface {
14
18
Enabled (key , userID string , attrs ... Attr ) bool
15
- EnabledUser (key string , user ld .User ) bool
19
+ EnabledUser (key string , user lduser .User ) bool
16
20
17
21
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
19
23
20
24
AllEnabledFlags (key string ) []string
21
- AllEnabledFlagsUser (key string , user ld .User ) []string
25
+ AllEnabledFlagsUser (key string , user lduser .User ) []string
22
26
}
23
27
24
28
type ldClient struct {
@@ -30,27 +34,25 @@ type ldClient struct {
30
34
var _ Client = & ldClient {}
31
35
32
36
func NewClient (cfg * Config , logger logrus.FieldLogger ) (Client , error ) {
33
- config := ld .DefaultConfig
37
+ config := ld.Config {}
34
38
35
39
if ! cfg .Enabled {
36
40
config .Offline = true
37
41
}
38
42
39
43
if cfg .updateProcessorFactory != nil {
40
- config .UpdateProcessorFactory = cfg .updateProcessorFactory
41
- config .SendEvents = false
44
+ config .DataSource = cfg .updateProcessorFactory
45
+ config .Events = ldcomponents . NoEvents ()
42
46
}
43
47
44
- configureLogger ( & config .Loggers , logger )
48
+ config .Logging = configureLogger ( logger )
45
49
46
50
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 )
50
52
}
51
53
52
54
if cfg .DisableEvents {
53
- config .SendEvents = false
55
+ config .Events = ldcomponents . NoEvents ()
54
56
}
55
57
56
58
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 {
69
71
return c .EnabledUser (key , c .userWithAttrs (userID , attrs ))
70
72
}
71
73
72
- func (c * ldClient ) EnabledUser (key string , user ld .User ) bool {
74
+ func (c * ldClient ) EnabledUser (key string , user lduser .User ) bool {
73
75
res , err := c .BoolVariation (key , user , false )
74
76
if err != nil {
75
77
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
81
83
return c .VariationUser (key , defaultVal , c .userWithAttrs (userID , attrs ))
82
84
}
83
85
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 {
85
87
res , err := c .StringVariation (key , user , defaultVal )
86
88
if err != nil {
87
89
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
90
92
}
91
93
92
94
func (c * ldClient ) AllEnabledFlags (key string ) []string {
93
- return c .AllEnabledFlagsUser (key , ld .NewUser (key ))
95
+ return c .AllEnabledFlagsUser (key , lduser .NewUser (key ))
94
96
}
95
97
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 () )
98
100
flagMap := res .ToValuesMap ()
99
101
100
102
var flags []string
101
103
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 )
107
106
}
108
107
}
109
108
110
109
return flags
111
110
}
112
111
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 )
115
114
for _ , attr := range c .defaultAttrs {
116
115
b .Custom (attr .Name , attr .Value )
117
116
}
@@ -130,18 +129,28 @@ func StringAttr(name, value string) Attr {
130
129
return Attr {Name : name , Value : ldvalue .String (value )}
131
130
}
132
131
133
- func configureLogger (ldLogger * ldlog. Loggers , log logrus.FieldLogger ) {
132
+ func configureLogger (log logrus.FieldLogger ) interfaces. LoggingConfigurationFactory {
134
133
if log == nil {
135
134
l := logrus .New ()
136
135
l .SetOutput (ioutil .Discard )
137
136
log = l
138
137
}
139
138
log = log .WithField ("component" , "launch_darkly" )
140
139
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 )
145
154
}
146
155
147
156
type wrapLog struct {
0 commit comments