Skip to content

Commit 0e9359e

Browse files
author
Michael Ng
authored
Merge pull request #96 from optimizely/fm-beta
2 parents 984923b + 960b6f6 commit 0e9359e

File tree

246 files changed

+15948
-34112
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

246 files changed

+15948
-34112
lines changed

.golangci.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
linters-settings:
2+
govet:
3+
check-shadowing: true
4+
golint:
5+
min-confidence: 0
6+
gocyclo:
7+
min-complexity: 16
8+
maligned:
9+
suggest-new: true
10+
dupl:
11+
threshold: 100
12+
goconst:
13+
min-len: 2
14+
min-occurrences: 2
15+
misspell:
16+
locale: US
17+
lll:
18+
line-length: 140
19+
gocritic:
20+
enabled-tags:
21+
- performance
22+
- style
23+
- experimental
24+
disabled-checks:
25+
- wrapperFunc
26+
- hugeParam
27+
- rangeValCopy
28+
29+
linters:
30+
disable-all: true
31+
enable:
32+
- megacheck
33+
- golint
34+
- govet
35+
- unconvert
36+
- megacheck
37+
- structcheck
38+
- gas
39+
- gocyclo
40+
- dupl
41+
- misspell
42+
- unparam
43+
- varcheck
44+
- deadcode
45+
- typecheck
46+
- ineffassign
47+
- varcheck
48+
- stylecheck
49+
#- gochecknoinits
50+
- scopelint
51+
- gocritic
52+
- golint
53+
- nakedret
54+
- gosimple
55+
- prealloc
56+
- maligned
57+
fast: false
58+
59+
run:
60+
skip-dirs:
61+
- vendor
62+
concurrency: 4
63+
64+
issues:
65+
exclude-rules:
66+
- text: "weak cryptographic primitive"
67+
linters:
68+
- gosec
69+
exclude-use-default: false
70+
71+
service:
72+
golangci-lint-version: 1.17.x

.travis.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
env:
2+
- GO111MODULE=on
3+
14
language: go
25
go:
36
- 1.12.x
@@ -6,18 +9,20 @@ before_install:
69
- go get github.com/mattn/goveralls
710
git:
811
depth: 1
9-
10-
before_script:
11-
- go get -u golang.org/x/lint/golint
1212
script:
13-
- golint ./...
1413
- go test -v -race ./... -coverprofile=profile.cov
1514
- $GOPATH/bin/goveralls -coverprofile=profile.cov -service=travis-ci
1615
stages:
16+
- 'Lint'
1717
- 'Integration tests'
1818
- 'Test'
1919
jobs:
2020
include:
21+
- stage: 'Lint'
22+
install:
23+
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
24+
script:
25+
- golangci-lint run --out-format=tab --tests=false optimizely/...
2126
- stage: 'Integration Tests'
2227
merge_mode: replace
2328
env: SDK=go
@@ -29,4 +34,4 @@ jobs:
2934
script:
3035
- "$HOME/travisci-tools/fsc-trigger/trigger_fullstack-sdk-compat.sh"
3136
after_success: travis_terminate 0
32-
37+

README.md

Lines changed: 127 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,14 @@ Usage:
5353
go-sdk [command]
5454
5555
Available Commands:
56-
help Help about any command
57-
is_feature_enabled Is feature enabled?
56+
help Help about any command
57+
is_feature_enabled Is feature enabled?
58+
get_enabled_features Get enabled features
59+
track Track a conversion event
60+
get_feature_variable_boolean Get feature variable boolean value
61+
get_feature_variable_double Get feature variable double value
62+
get_feature_variable_integer Get feature variable integer value
63+
get_feature_variable_string Get feature variable string value
5864
5965
Flags:
6066
-h, --help help for go-sdk
@@ -80,11 +86,30 @@ cd $GOPATH/src/github.com/optimizely/go-sdk
8086
go install
8187
```
8288

89+
NOTE:
90+
We practice trunk-based development, and as such our default branch, `master` might not always be the most stable. We do tag releases on Github and you can pin your installation to those particular release versions. One way to do this is to use [*Go Modules*](https://blog.golang.org/using-go-modules) for managing external dependencies:
91+
92+
```
93+
module mymodule
94+
95+
go 1.12
96+
97+
require (
98+
github.com/optimizely/go-sdk v0.1.0
99+
)
100+
```
101+
102+
If you are already using `go.mod` in your application you can run the following:
103+
104+
```
105+
go mod edit -require github.com/optimizely/[email protected]
106+
```
107+
83108
NOTE:
84109
```$sh
85110
go get github.com/optimizely/go-sdk/...
86111
```
87-
or
112+
or
88113
```$sh
89114
go get github.com/optimizely/go-sdk/optimizely
90115
```
@@ -108,6 +133,105 @@ Global Flags:
108133
-s, --sdkKey string Optimizely project SDK key
109134
```
110135

136+
#### get_enabled_features
137+
```
138+
Returns enabled features for userId
139+
140+
Usage:
141+
go-sdk get_enabled_features [flags]
142+
143+
Flags:
144+
-h, --help help for get_enabled_features
145+
-u, --userId string user id
146+
147+
Global Flags:
148+
-s, --sdkKey string Optimizely project SDK key
149+
```
150+
151+
#### track
152+
```
153+
Tracks a conversion event
154+
155+
Usage:
156+
go-sdk track [flags]
157+
158+
Flags:
159+
-e, --eventKey string event key to track
160+
-h, --help help for track
161+
-u, --userId string user id
162+
163+
Global Flags:
164+
-s, --sdkKey string Optimizely project SDK key
165+
```
166+
167+
#### get_feature_variable_boolean
168+
```
169+
Returns feature variable boolean value
170+
171+
Usage:
172+
go-sdk get_feature_variable_boolean [flags]
173+
174+
Flags:
175+
-f, --featureKey string feature key for feature
176+
-v, --variableKey string variable key for feature variable
177+
-h, --help help for get_feature_variable_boolean
178+
-u, --userId string user id
179+
180+
Global Flags:
181+
-s, --sdkKey string Optimizely project SDK key
182+
```
183+
184+
#### get_feature_variable_double
185+
```
186+
Returns feature variable double value
187+
188+
Usage:
189+
go-sdk get_feature_variable_double [flags]
190+
191+
Flags:
192+
-f, --featureKey string feature key for feature
193+
-v, --variableKey string variable key for feature variable
194+
-h, --help help for get_feature_variable_double
195+
-u, --userId string user id
196+
197+
Global Flags:
198+
-s, --sdkKey string Optimizely project SDK key
199+
```
200+
201+
#### get_feature_variable_integer
202+
```
203+
Returns feature variable integer value
204+
205+
Usage:
206+
go-sdk get_feature_variable_integer [flags]
207+
208+
Flags:
209+
-f, --featureKey string feature key for feature
210+
-v, --variableKey string variable key for feature variable
211+
-h, --help help for get_feature_variable_integer
212+
-u, --userId string user id
213+
214+
Global Flags:
215+
-s, --sdkKey string Optimizely project SDK key
216+
```
217+
218+
#### get_feature_variable_string
219+
```
220+
Returns feature variable string value
221+
222+
Usage:
223+
go-sdk get_feature_variable_string [flags]
224+
225+
Flags:
226+
-f, --featureKey string feature key for feature
227+
-v, --variableKey string variable key for feature variable
228+
-h, --help help for get_feature_variable_string
229+
-u, --userId string user id
230+
231+
Global Flags:
232+
-s, --sdkKey string Optimizely project SDK key
233+
```
234+
111235
## Credits
112236

113237
This software is distributed with code from the following open source projects:

cmd/get_enabled_features.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
/****************************************************************************
2+
* Copyright 2019, Optimizely, Inc. and contributors *
3+
* *
4+
* Licensed under the Apache License, Version 2.0 (the "License"); *
5+
* you may not use this file except in compliance with the License. *
6+
* You may obtain a copy of the License at *
7+
* *
8+
* http://www.apache.org/licenses/LICENSE-2.0 *
9+
* *
10+
* Unless required by applicable law or agreed to in writing, software *
11+
* distributed under the License is distributed on an "AS IS" BASIS, *
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13+
* See the License for the specific language governing permissions and *
14+
* limitations under the License. *
15+
***************************************************************************/
16+
17+
package cmd
18+
19+
import (
20+
"fmt"
21+
22+
"github.com/optimizely/go-sdk/optimizely/client"
23+
"github.com/optimizely/go-sdk/optimizely/entities"
24+
"github.com/spf13/cobra"
25+
)
26+
27+
var getEnabledFeaturesCmd = &cobra.Command{
28+
Use: "get_enabled_features",
29+
Short: "Get enabled features",
30+
Long: `Returns enabled features`,
31+
Run: func(cmd *cobra.Command, args []string) {
32+
optimizelyFactory := &client.OptimizelyFactory{
33+
SDKKey: sdkKey,
34+
}
35+
36+
client, err := optimizelyFactory.StaticClient()
37+
38+
if err != nil {
39+
fmt.Printf("Error instantiating client: %s\n", err)
40+
return
41+
}
42+
43+
user := entities.UserContext{
44+
ID: userID,
45+
Attributes: map[string]interface{}{},
46+
}
47+
48+
features, _ := client.GetEnabledFeatures(user)
49+
fmt.Printf("Enabled features for \"%s\": %v\n", userID, features)
50+
},
51+
}
52+
53+
func init() {
54+
rootCmd.AddCommand(getEnabledFeaturesCmd)
55+
getEnabledFeaturesCmd.Flags().StringVarP(&userID, "userId", "u", "", "user id")
56+
getEnabledFeaturesCmd.MarkFlagRequired("userId")
57+
}

cmd/get_feature_variable_boolean.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/****************************************************************************
2+
* Copyright 2019, Optimizely, Inc. and contributors *
3+
* *
4+
* Licensed under the Apache License, Version 2.0 (the "License"); *
5+
* you may not use this file except in compliance with the License. *
6+
* You may obtain a copy of the License at *
7+
* *
8+
* http://www.apache.org/licenses/LICENSE-2.0 *
9+
* *
10+
* Unless required by applicable law or agreed to in writing, software *
11+
* distributed under the License is distributed on an "AS IS" BASIS, *
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13+
* See the License for the specific language governing permissions and *
14+
* limitations under the License. *
15+
***************************************************************************/
16+
17+
package cmd
18+
19+
import (
20+
"fmt"
21+
22+
"github.com/optimizely/go-sdk/optimizely/client"
23+
"github.com/optimizely/go-sdk/optimizely/entities"
24+
"github.com/spf13/cobra"
25+
)
26+
27+
var getFeatureVariableBooleanCmd = &cobra.Command{
28+
Use: "get_feature_variable_boolean",
29+
Short: "Get feature variable boolean",
30+
Long: `Returns boolean feature variable`,
31+
Run: func(cmd *cobra.Command, args []string) {
32+
optimizelyFactory := &client.OptimizelyFactory{
33+
SDKKey: sdkKey,
34+
}
35+
36+
client, err := optimizelyFactory.StaticClient()
37+
38+
if err != nil {
39+
fmt.Printf("Error instantiating client: %s\n", err)
40+
return
41+
}
42+
43+
user := entities.UserContext{
44+
ID: userID,
45+
Attributes: map[string]interface{}{},
46+
}
47+
48+
value, _ := client.GetFeatureVariableBoolean(featureKey, variableKey, user)
49+
if err == nil {
50+
fmt.Printf("Feature \"%s\" variable \"%s\" boolean value: %t\n", featureKey, variableKey, value)
51+
} else {
52+
fmt.Printf("Get feature \"%s\" variable \"%s\" boolean failed with error: %s\n", featureKey, variableKey, err)
53+
}
54+
},
55+
}
56+
57+
func init() {
58+
rootCmd.AddCommand(getFeatureVariableBooleanCmd)
59+
getFeatureVariableBooleanCmd.Flags().StringVarP(&userID, "userId", "u", "", "user id")
60+
getFeatureVariableBooleanCmd.MarkFlagRequired("userId")
61+
getFeatureVariableBooleanCmd.Flags().StringVarP(&featureKey, "featureKey", "f", "", "feature key for feature")
62+
getFeatureVariableBooleanCmd.MarkFlagRequired("featureKey")
63+
getFeatureVariableBooleanCmd.Flags().StringVarP(&variableKey, "variableKey", "v", "", "variable key for feature variable")
64+
getFeatureVariableBooleanCmd.MarkFlagRequired("variableKey")
65+
}

0 commit comments

Comments
 (0)