Skip to content

Commit 22809f4

Browse files
Abhi591Varun Malhotra
authored andcommitted
feat: Openfeature VWO Go Provider
0 parents  commit 22809f4

File tree

14 files changed

+1095
-0
lines changed

14 files changed

+1095
-0
lines changed

.gitignore

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
example/
2+
3+
.vscode/
4+
5+
.idea/
6+
7+
.DS_Store
8+
.DS_Store?
9+
.env

CHANGELOG.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [1.0.0] - 2025-11-07
9+
10+
### Added
11+
12+
- First release of VWO OpenFeature Provider Go
13+
14+
```go
15+
package main
16+
17+
import (
18+
"context"
19+
"fmt"
20+
"log"
21+
22+
"github.com/open-feature/go-sdk/openfeature"
23+
vwo "github.com/wingify/vwo-openfeature-provider-go/pkg"
24+
)
25+
26+
func main() {
27+
provider, err := vwo.NewVWOProviderWithConfig(map[string]interface{}{
28+
"sdkKey": "<your-vwo-sdk-key>",
29+
"accountId": "<your-vwo-account-id>",
30+
})
31+
if err != nil {
32+
log.Fatalf("Failed to create VWO feature provider: %v", err)
33+
}
34+
35+
openfeature.SetProviderAndWait(provider)
36+
client := openfeature.NewClient("my-app")
37+
38+
// Evaluate a boolean flag. If no variableKey is provided, this returns flag enabled/disabled.
39+
ctx := openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "booleanVariableKey"})
40+
enabled, err := client.BooleanValue(context.Background(), "featureKey", false, ctx)
41+
if err != nil {
42+
log.Fatalf("Failed to get boolean value: %v", err)
43+
}
44+
fmt.Println("Enabled:", enabled)
45+
46+
// Evaluate typed variables by passing variableKey in the evaluation context
47+
// String variable
48+
ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "stringVariableKey"})
49+
strVal, _ := client.StringValue(context.Background(), "featureKey", "default", ctx)
50+
fmt.Println("String value:", strVal)
51+
52+
// Integer variable
53+
ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "integerVariableKey"})
54+
intVal, _ := client.IntValue(context.Background(), "featureKey", 0, ctx)
55+
fmt.Println("Int value:", intVal)
56+
57+
// Float variable
58+
ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "floatVariableKey"})
59+
floatVal, _ := client.FloatValue(context.Background(), "featureKey", 0.0, ctx)
60+
fmt.Println("Float value:", floatVal)
61+
62+
// JSON variable
63+
ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "jsonVariableKey"})
64+
jsonVal, _ := client.ObjectValue(context.Background(), "featureKey", map[string]any{}, ctx)
65+
fmt.Println("JSON value:", jsonVal)
66+
}
67+
```

CODE_OF_CONDUCT.md

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
In the interest of fostering an open and welcoming environment, we as
6+
contributors and maintainers pledge to making participation in our project and
7+
our community a harassment-free experience for everyone, regardless of age, body
8+
size, disability, ethnicity, sex characteristics, gender identity and expression,
9+
level of experience, education, socio-economic status, nationality, personal
10+
appearance, race, religion, or sexual identity and orientation.
11+
12+
## Our Standards
13+
14+
Examples of behavior that contributes to creating a positive environment
15+
include:
16+
17+
- Using welcoming and inclusive language
18+
- Being respectful of differing viewpoints and experiences
19+
- Gracefully accepting constructive criticism
20+
- Focusing on what is best for the community
21+
- Showing empathy towards other community members
22+
23+
Examples of unacceptable behavior by participants include:
24+
25+
- The use of sexualized language or imagery and unwelcome sexual attention or
26+
advances
27+
- Trolling, insulting/derogatory comments, and personal or political attacks
28+
- Public or private harassment
29+
- Publishing others' private information, such as a physical or electronic
30+
address, without explicit permission
31+
- Other conduct which could reasonably be considered inappropriate in a
32+
professional setting
33+
34+
## Our Responsibilities
35+
36+
Project maintainers are responsible for clarifying the standards of acceptable
37+
behavior and are expected to take appropriate and fair corrective action in
38+
response to any instances of unacceptable behavior.
39+
40+
Project maintainers have the right and responsibility to remove, edit, or
41+
reject comments, commits, code, wiki edits, issues, and other contributions
42+
that are not aligned to this Code of Conduct, or to ban temporarily or
43+
permanently any contributor for other behaviors that they deem inappropriate,
44+
threatening, offensive, or harmful.
45+
46+
## Scope
47+
48+
This Code of Conduct applies both within project spaces and in public spaces
49+
when an individual is representing the project or its community. Examples of
50+
representing a project or community include using an official project e-mail
51+
address, posting via an official social media account, or acting as an appointed
52+
representative at an online or offline event. Representation of a project may be
53+
further defined and clarified by project maintainers.
54+
55+
## Enforcement
56+
57+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
58+
reported by contacting the project team at dev@wingify.com. All
59+
complaints will be reviewed and investigated and will result in a response that
60+
is deemed necessary and appropriate to the circumstances. The project team is
61+
obligated to maintain confidentiality with regard to the reporter of an incident.
62+
Further details of specific enforcement policies may be posted separately.
63+
64+
Project maintainers who do not follow or enforce the Code of Conduct in good
65+
faith may face temporary or permanent repercussions as determined by other
66+
members of the project's leadership.
67+
68+
## Attribution
69+
70+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71+
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72+
73+
[homepage]: https://www.contributor-covenant.org
74+
75+
For answers to common questions about this code of conduct, see
76+
https://www.contributor-covenant.org/faq

CONTRIBUTING.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
## Contributing to VWO OpenFeature Provider Go
2+
3+
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
4+
5+
- Reporting a bug
6+
- Discussing the current state of the code
7+
- Submitting a fix
8+
- Proposing new features
9+
10+
### We Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests
11+
12+
Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests:
13+
14+
1. Fork the repo and create your branch from `master`.
15+
2. If you've added code that should be tested, add tests.
16+
3. Ensure the test suite passes.
17+
4. Make sure your code lints.
18+
5. Open a pull request!
19+
20+
### Any contributions you make will be under the Apache 2.0 Software License
21+
22+
When you submit code changes, your submissions are understood to be under the same [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0) that covers the project. Feel free to contact the maintainers if that's a concern.
23+
24+
### Report bugs using GitHub issues
25+
26+
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/wingify/vwo-openfeature-provider-go/issues); it's that easy!
27+
28+
**Note**: Write bug reports with detail, background, and sample code
29+
30+
**Great Bug Reports** tend to have:
31+
32+
- A quick summary and/or background
33+
- Steps to reproduce
34+
- Be specific!
35+
- Give sample code if you can.
36+
- What you expected would happen
37+
- What actually happens
38+
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
39+
40+
### License
41+
42+
By contributing, you agree that your contributions will be licensed under its Apache 2.0 License.

0 commit comments

Comments
 (0)