Skip to content

Version 1.0.0

Latest

Choose a tag to compare

@softvar softvar released this 07 Nov 11:03

Added

  • First release of VWO OpenFeature Provider Go

    package main
    
    import (
        "context"
        "fmt"
        "log"
    
        "github.com/open-feature/go-sdk/openfeature"
        vwo "github.com/wingify/vwo-openfeature-provider-go/pkg"
    )
    
    func main() {
        provider, err := vwo.NewVWOProviderWithConfig(map[string]interface{}{
            "sdkKey":    "<your-vwo-sdk-key>",
            "accountId": "<your-vwo-account-id>",
        })
        if err != nil {
            log.Fatalf("Failed to create VWO feature provider: %v", err)
        }
    
        openfeature.SetProviderAndWait(provider)
        client := openfeature.NewClient("my-app")
    
        // Evaluate a boolean flag. If no variableKey is provided, this returns flag enabled/disabled.
        ctx := openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "booleanVariableKey"})
        enabled, err := client.BooleanValue(context.Background(), "featureKey", false, ctx)
        if err != nil {
            log.Fatalf("Failed to get boolean value: %v", err)
        }
        fmt.Println("Enabled:", enabled)
    
        // Evaluate typed variables by passing variableKey in the evaluation context
        // String variable
        ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "stringVariableKey"})
        strVal, _ := client.StringValue(context.Background(), "featureKey", "default", ctx)
        fmt.Println("String value:", strVal)
    
        // Integer variable
        ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "integerVariableKey"})
        intVal, _ := client.IntValue(context.Background(), "featureKey", 0, ctx)
        fmt.Println("Int value:", intVal)
    
        // Float variable
        ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "floatVariableKey"})
        floatVal, _ := client.FloatValue(context.Background(), "featureKey", 0.0, ctx)
        fmt.Println("Float value:", floatVal)
    
        // JSON variable
        ctx = openfeature.NewEvaluationContext("unique-user-id", map[string]any{"variableKey": "jsonVariableKey"})
        jsonVal, _ := client.ObjectValue(context.Background(), "featureKey", map[string]any{}, ctx)
        fmt.Println("JSON value:", jsonVal)
    }