Documentation ΒΆ
Overview ΒΆ
Package ffclient aids adding instrumentation to have feature flags in your app without any backend server.
Summary ΒΆ
This package and its subpackages contain bits of code to have an easy feature flag solution with no complex installation to do on your infrastructure and without using 3rd party vendor for this.
The ffclient package provides the entry point - initialization and the basic method to get your flags value.
Before using the module you need to initialized it this way:
func main() { err := ffclient.Init(ffclient.Config{ PollingInterval: 3 * time.Second, HTTPRetriever: &httpretriever.Retriever{ URL: "http://example.com/flag-config.yaml", }, }) defer ffclient.Close() ...
This example will load a file from an HTTP endpoint and will refresh the flags every 3 seconds.
Now you can evalute your flags anywhere in your code.
func main() { ... user := ffuser.NewUser("user-unique-key") hasFlag, _ := ffclient.BoolVariation("test-flag", user, false) if hasFlag { //flag "test-flag" is true for the user } else { // flag "test-flag" is false for the user } ...
nolint: dupl
Index ΒΆ
- func AllFlagsState(user ffuser.User) flagstate.AllFlags
- func BoolVariation(flagKey string, user ffuser.User, defaultValue bool) (bool, error)
- func Close()
- func Float64Variation(flagKey string, user ffuser.User, defaultValue float64) (float64, error)
- func GetCacheRefreshDate() time.Time
- func GetFlagsFromCache() (map[string]flag.Flag, error)
- func Init(config Config) error
- func IntVariation(flagKey string, user ffuser.User, defaultValue int) (int, error)
- func JSONArrayVariation(flagKey string, user ffuser.User, defaultValue []interface{}) ([]interface{}, error)
- func JSONVariation(flagKey string, user ffuser.User, defaultValue map[string]interface{}) (map[string]interface{}, error)
- func StringVariation(flagKey string, user ffuser.User, defaultValue string) (string, error)
- type Config
- type DataExporter
- type GoFeatureFlag
- func (g *GoFeatureFlag) AllFlagsState(user ffuser.User) flagstate.AllFlags
- func (g *GoFeatureFlag) BoolVariation(flagKey string, user ffuser.User, defaultValue bool) (bool, error)
- func (g *GoFeatureFlag) Close()
- func (g *GoFeatureFlag) Float64Variation(flagKey string, user ffuser.User, defaultValue float64) (float64, error)
- func (g *GoFeatureFlag) GetCacheRefreshDate() time.Time
- func (g *GoFeatureFlag) GetFlagsFromCache() (map[string]flag.Flag, error)
- func (g *GoFeatureFlag) IntVariation(flagKey string, user ffuser.User, defaultValue int) (int, error)
- func (g *GoFeatureFlag) JSONArrayVariation(flagKey string, user ffuser.User, defaultValue []interface{}) ([]interface{}, error)
- func (g *GoFeatureFlag) JSONVariation(flagKey string, user ffuser.User, defaultValue map[string]interface{}) (map[string]interface{}, error)
- func (g *GoFeatureFlag) RawVariation(flagKey string, user ffuser.User, sdkDefaultValue interface{}) (model.RawVarResult, error)
- func (g *GoFeatureFlag) StringVariation(flagKey string, user ffuser.User, defaultValue string) (string, error)
Constants ΒΆ
This section is empty.
Variables ΒΆ
This section is empty.
Functions ΒΆ
func AllFlagsState ΒΆ added in v0.17.0
AllFlagsState return the values of all the flags for a specific user. If valid field is false it means that we had an error when checking the flags.
func BoolVariation ΒΆ
BoolVariation return the value of the flag in boolean. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value.
func Close ΒΆ
func Close()
Close the component by stopping the background refresh and clean the cache.
func Float64Variation ΒΆ
Float64Variation return the value of the flag in float64. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value.
func GetCacheRefreshDate ΒΆ added in v0.22.0
GetCacheRefreshDate gives the date of the latest refresh of the cache
func GetFlagsFromCache ΒΆ added in v0.24.0
GetFlagsFromCache returns all the flags present in the cache with their current state when calling this method. If cache hasn't been initialized, an error reporting this is returned.
func Init ΒΆ
Init the feature flag component with the configuration of ffclient.Config
func main() { err := ffclient.Init(ffclient.Config{ PollingInterval: 3 * time.Second, Retriever: &httpretriever.Retriever{ URL: "http://example.com/flag-config.yaml", }, }) defer ffclient.Close()
func IntVariation ΒΆ
IntVariation return the value of the flag in int. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value.
func JSONArrayVariation ΒΆ
func JSONArrayVariation(flagKey string, user ffuser.User, defaultValue []interface{}) ([]interface{}, error)
JSONArrayVariation return the value of the flag in []interface{}. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value.
func JSONVariation ΒΆ
func JSONVariation( flagKey string, user ffuser.User, defaultValue map[string]interface{}, ) (map[string]interface{}, error)
JSONVariation return the value of the flag in map[string]interface{}. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value.
func StringVariation ΒΆ
StringVariation return the value of the flag in string. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value.
Types ΒΆ
type Config ΒΆ
type Config struct { // PollingInterval (optional) Poll every X time // The minimum possible is 1 second // Default: 60 seconds PollingInterval time.Duration // Logger (optional) logger use by the library // Default: No log Logger *log.Logger // Context (optional) used to call other services (HTTP, S3 ...) // Default: context.Background() Context context.Context // Environment (optional), can be checked in feature flag rules // Default: "" Environment string // Retriever is the component in charge to retrieve your flag file Retriever retriever.Retriever // Notifiers (optional) is the list of notifiers called when a flag change Notifiers []notifier.Notifier // FileFormat (optional) is the format of the file to retrieve (available YAML, TOML and JSON) // Default: YAML FileFormat string // DataExporter (optional) is the configuration where we store how we should output the flags variations results DataExporter DataExporter // StartWithRetrieverError (optional) If true, the SDK will start even if we did not get any flags from the retriever. // It will serve only default values until the retriever returns the flags. // The init method will not return any error if the flag file is unreachable. // Default: false StartWithRetrieverError bool // Offline (optional) If true, the SDK will not try to retrieve the flag file and will not export any data. // No notification will be send neither. // Default: false Offline bool }
Config is the configuration of go-feature-flag. You should also have a retriever to specify where to read the flags file.
type DataExporter ΒΆ added in v0.10.0
type DataExporter struct { // FlushInterval is the interval we are waiting to export the data. // example: if you set your FlushInterval to 1 minutes, we will send // the data every minute unless we reach the max event in cache before. FlushInterval time.Duration // MaxEventInMemory is the maximum number of event you keep in the cache // before sending the data to the Exporter. // We will send the data when the MaxEventInMemory is reach or if we have // waited the FlushInterval. MaxEventInMemory int64 // Exporter is the configuration of your exporter. // You can see all available exporter in the exporter package. Exporter dataexporter.Exporter }
DataExporter is the configuration of your export target.
type GoFeatureFlag ΒΆ added in v0.6.0
type GoFeatureFlag struct {
// contains filtered or unexported fields
}
GoFeatureFlag is the main object of the library it contains the cache, the config and the update.
func New ΒΆ added in v0.6.0
func New(config Config) (*GoFeatureFlag, error)
New creates a new go-feature-flag instance that retrieve the config from a YAML file and return everything you need to manage your flags.
func (*GoFeatureFlag) AllFlagsState ΒΆ added in v0.17.0
func (g *GoFeatureFlag) AllFlagsState(user ffuser.User) flagstate.AllFlags
AllFlagsState return a flagstate.AllFlags that contains all the flags for a specific user.
func (*GoFeatureFlag) BoolVariation ΒΆ added in v0.6.0
func (g *GoFeatureFlag) BoolVariation(flagKey string, user ffuser.User, defaultValue bool) (bool, error)
BoolVariation return the value of the flag in boolean. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value. Note: Use this function only if you are using multiple go-feature-flag instances.
func (*GoFeatureFlag) Close ΒΆ added in v0.6.0
func (g *GoFeatureFlag) Close()
Close wait until thread are done
func (*GoFeatureFlag) Float64Variation ΒΆ added in v0.6.0
func (g *GoFeatureFlag) Float64Variation(flagKey string, user ffuser.User, defaultValue float64) (float64, error)
Float64Variation return the value of the flag in float64. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value. Note: Use this function only if you are using multiple go-feature-flag instances.
func (*GoFeatureFlag) GetCacheRefreshDate ΒΆ added in v0.22.0
func (g *GoFeatureFlag) GetCacheRefreshDate() time.Time
GetCacheRefreshDate gives the date of the latest refresh of the cache
func (*GoFeatureFlag) GetFlagsFromCache ΒΆ added in v0.24.0
func (g *GoFeatureFlag) GetFlagsFromCache() (map[string]flag.Flag, error)
GetFlagsFromCache returns all the flags present in the cache with their current state when calling this method. If cache hasn't been initialized, an error reporting this is returned.
func (*GoFeatureFlag) IntVariation ΒΆ added in v0.6.0
func (g *GoFeatureFlag) IntVariation(flagKey string, user ffuser.User, defaultValue int) (int, error)
IntVariation return the value of the flag in int. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value. Note: Use this function only if you are using multiple go-feature-flag instances.
func (*GoFeatureFlag) JSONArrayVariation ΒΆ added in v0.6.0
func (g *GoFeatureFlag) JSONArrayVariation( flagKey string, user ffuser.User, defaultValue []interface{}, ) ([]interface{}, error)
JSONArrayVariation return the value of the flag in []interface{}. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value. Note: Use this function only if you are using multiple go-feature-flag instances.
func (*GoFeatureFlag) JSONVariation ΒΆ added in v0.6.0
func (g *GoFeatureFlag) JSONVariation( flagKey string, user ffuser.User, defaultValue map[string]interface{}, ) (map[string]interface{}, error)
JSONVariation return the value of the flag in map[string]interface{}. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value. Note: Use this function only if you are using multiple go-feature-flag instances.
func (*GoFeatureFlag) RawVariation ΒΆ added in v0.22.2
func (g *GoFeatureFlag) RawVariation(flagKey string, user ffuser.User, sdkDefaultValue interface{}, ) (model.RawVarResult, error)
RawVariation return the raw value of the flag (without any types). This raw result is mostly used by software built on top of go-feature-flag such as go-feature-flag relay proxy. If you are using directly the library you should avoid calling this function. Note: Use this function only if you are using multiple go-feature-flag instances.
func (*GoFeatureFlag) StringVariation ΒΆ added in v0.6.0
func (g *GoFeatureFlag) StringVariation(flagKey string, user ffuser.User, defaultValue string) (string, error)
StringVariation return the value of the flag in string. An error is return if you don't have init the library before calling the function. If the key does not exist we return the default value. Note: Use this function only if you are using multiple go-feature-flag instances.
Source Files ΒΆ
Directories ΒΆ
Path | Synopsis |
---|---|
cmd
|
|
relayproxy/docs
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag
|
Package docs GENERATED BY SWAG; DO NOT EDIT This file was generated by swaggo/swag |
examples
|
|
Package exporter defines the data exporter of go-feature-flag
|
Package exporter defines the data exporter of go-feature-flag |
Package ffuser defines the go-feature-flag model for user properties.
|
Package ffuser defines the go-feature-flag model for user properties. |
Package testutils is a generated GoMock package.
|
Package testutils is a generated GoMock package. |