Skip to content

Commit 3dace62

Browse files
authored
Merge pull request #5 from subiradhikari/FFM-518
Ffm 518
2 parents dde32d6 + a122568 commit 3dace62

File tree

5 files changed

+40
-5
lines changed

5 files changed

+40
-5
lines changed

client/client_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ func target() *evaluation.Target {
145145
Lastname("Doe").
146146
147147
Build()
148-
return target
148+
return &target
149149
}
150150

151151
var ValidAuthResponse = func(req *http.Request) (*http.Response, error) {

client/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"log"
55
"net/http"
66

7+
"github.com/drone/ff-golang-server-sdk/evaluation"
8+
79
"github.com/drone/ff-golang-server-sdk/cache"
810
"github.com/drone/ff-golang-server-sdk/logger"
911
"github.com/drone/ff-golang-server-sdk/storage"
@@ -19,6 +21,7 @@ type config struct {
1921
httpClient *http.Client
2022
enableStream bool
2123
enableStore bool
24+
target evaluation.Target
2225
}
2326

2427
func newDefaultConfig() *config {

client/options.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"net/http"
55

66
"github.com/drone/ff-golang-server-sdk/cache"
7+
"github.com/drone/ff-golang-server-sdk/evaluation"
78
"github.com/drone/ff-golang-server-sdk/logger"
89
"github.com/drone/ff-golang-server-sdk/storage"
910
)
@@ -73,3 +74,10 @@ func WithHTTPClient(client *http.Client) ConfigOption {
7374
config.httpClient = client
7475
}
7576
}
77+
78+
// WithTarget sets target
79+
func WithTarget(target evaluation.Target) ConfigOption {
80+
return func(config *config) {
81+
config.target = target
82+
}
83+
}

dto/target_builder.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type TargetBuilderInterface interface {
1414
Name(string) TargetBuilderInterface
1515
Anonymous(bool) TargetBuilderInterface
1616
Custom(name string, value interface{}) TargetBuilderInterface
17-
Build() *evaluation.Target
17+
Build() evaluation.Target
1818
}
1919

2020
// TargetBuilder structure for building targets
@@ -84,6 +84,6 @@ func (b *targetBuilder) Custom(key string, value interface{}) TargetBuilderInter
8484
}
8585

8686
// Build returns target object
87-
func (b *targetBuilder) Build() *evaluation.Target {
88-
return b.Target
87+
func (b *targetBuilder) Build() evaluation.Target {
88+
return *b.Target
8989
}

rest/adapter.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,23 @@ func (p Prerequisite) convert() *evaluation.Prerequisite {
6969
}
7070
}
7171

72+
//convert converts variation map to evaluation object
73+
func (v VariationMap) convert() *evaluation.VariationMap {
74+
return &evaluation.VariationMap{
75+
TargetSegments: *v.TargetSegments,
76+
Targets: convertTargetToIdentifier(*v.Targets),
77+
Variation: v.Variation,
78+
}
79+
}
80+
81+
func convertTargetToIdentifier(tm []TargetMap) []string {
82+
result := make([]string, 0, len(tm))
83+
for j := range tm {
84+
result = append(result, *tm[j].Identifier)
85+
}
86+
return result
87+
}
88+
7289
// Convert feature flag from ff server to evaluation object
7390
func (fc FeatureConfig) Convert() *evaluation.FeatureConfig {
7491
vars := make(evaluation.Variations, len(fc.Variations))
@@ -98,6 +115,13 @@ func (fc FeatureConfig) Convert() *evaluation.FeatureConfig {
98115
if fc.DefaultServe.Variation != nil {
99116
defaultServe.Variation = fc.DefaultServe.Variation
100117
}
118+
var vtm []evaluation.VariationMap
119+
if fc.VariationToTargetMap != nil {
120+
vtm = make([]evaluation.VariationMap, len(*fc.VariationToTargetMap))
121+
for i, val := range *fc.VariationToTargetMap {
122+
vtm[i] = *val.convert()
123+
}
124+
}
101125
return &evaluation.FeatureConfig{
102126
DefaultServe: defaultServe,
103127
Environment: fc.Environment,
@@ -108,7 +132,7 @@ func (fc FeatureConfig) Convert() *evaluation.FeatureConfig {
108132
Project: fc.Project,
109133
Rules: rules,
110134
State: evaluation.FeatureState(fc.State),
111-
VariationToTargetMap: nil,
135+
VariationToTargetMap: vtm,
112136
Variations: vars,
113137
}
114138
}

0 commit comments

Comments
 (0)