flagsmith

package module
v3.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 30, 2024 License: BSD-3-Clause Imports: 16 Imported by: 2

README

Go GoReportCard GoDoc

Flagsmith Go SDK

Flagsmith allows you to manage feature flags and remote config across multiple projects, environments and organisations.

This is the SDK for go for https://flagsmith.com/.

Adding to your project

For full documentation visit https://docs.flagsmith.com/clients/server-side.

Contributing

Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests to us.

Getting Help

If you encounter a bug or feature request we would like to hear about it. Before you submit an issue please search existing issues in order to prevent duplicates.

Get in touch

If you have any questions about our projects you can email support@flagsmith.com.

Documentation

Index

Constants

View Source
const (
	// Number of seconds to wait for a request to
	// complete before terminating the request.
	DefaultTimeout = 10 * time.Second

	// Default base URL for the API.
	DefaultBaseURL = "https://edge.api.flagsmith.com/api/v1/"
)
View Source
const AnalyticsEndpoint = "analytics/flags/"
View Source
const AnalyticsTimerInMilli = 10 * 1000

Variables

This section is empty.

Functions

This section is empty.

Types

type AnalyticsProcessor

type AnalyticsProcessor struct {
	// contains filtered or unexported fields
}

func NewAnalyticsProcessor

func NewAnalyticsProcessor(ctx context.Context, client *resty.Client, baseURL string, timerInMilli *int, log Logger) *AnalyticsProcessor

func (*AnalyticsProcessor) Flush

func (a *AnalyticsProcessor) Flush(ctx context.Context) error

func (*AnalyticsProcessor) TrackFeature

func (a *AnalyticsProcessor) TrackFeature(featureName string)

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client provides various methods to query Flagsmith API.

func NewClient

func NewClient(apiKey string, options ...Option) *Client

NewClient creates instance of Client with given configuration.

func (*Client) BulkIdentify

func (c *Client) BulkIdentify(ctx context.Context, batch []*IdentityTraits) error

BulkIdentify can be used to create/overwrite identities(with traits) in bulk NOTE: This method only works with Edge API endpoint.

func (*Client) GetEnvironmentFlags

func (c *Client) GetEnvironmentFlags(ctx context.Context) (f Flags, err error)

Returns `Flags` struct holding all the flags for the current environment.

If local evaluation is enabled this function will not call the Flagsmith API directly, but instead read the asynchronously updated local environment or use the default flag handler in case it has not yet been updated.

func (*Client) GetEnvironmentFlagsFromAPI

func (c *Client) GetEnvironmentFlagsFromAPI(ctx context.Context) (Flags, error)

GetEnvironmentFlagsFromAPI tries to contact the Flagsmith API to get the latest environment data. Will return an error in case of failure or unexpected response.

func (*Client) GetIdentityFlags

func (c *Client) GetIdentityFlags(ctx context.Context, identifier string, traits []*Trait) (f Flags, err error)

Returns `Flags` struct holding all the flags for the current environment for a given identity.

If local evaluation is disabled it will also upsert all traits to the Flagsmith API for future evaluations. Providing a trait with a value of nil will remove the trait from the identity if it exists.

If local evaluation is enabled this function will not call the Flagsmith API directly, but instead read the asynchronously updated local environment or use the default flag handler in case it has not yet been updated.

func (*Client) GetIdentityFlagsFromAPI

func (c *Client) GetIdentityFlagsFromAPI(ctx context.Context, identifier string, traits []*Trait) (Flags, error)

GetIdentityFlagsFromAPI tries to contact the Flagsmith API to get the latest identity flags. Will return an error in case of failure or unexpected response.

func (*Client) GetIdentitySegments

func (c *Client) GetIdentitySegments(identifier string, traits []*Trait) ([]*segments.SegmentModel, error)

Returns an array of segments that the given identity is part of.

func (*Client) UpdateEnvironment

func (c *Client) UpdateEnvironment(ctx context.Context) error

type Flag

type Flag struct {
	Enabled     bool
	Value       interface{}
	IsDefault   bool
	FeatureID   int
	FeatureName string
}

type Flags

type Flags struct {
	// contains filtered or unexported fields
}

func (*Flags) AllFlags

func (f *Flags) AllFlags() []Flag

Returns an array of all flag objects.

func (*Flags) GetFeatureValue

func (f *Flags) GetFeatureValue(featureName string) (interface{}, error)

Returns the value of a particular flag.

func (*Flags) GetFlag

func (f *Flags) GetFlag(featureName string) (Flag, error)

Returns a specific flag given the name of the feature.

func (*Flags) IsFeatureEnabled

func (f *Flags) IsFeatureEnabled(featureName string) (bool, error)

Returns a boolean indicating whether a particular flag is enabled.

type FlagsmithAPIError

type FlagsmithAPIError struct {
	Msg                string
	Err                error
	ResponseStatusCode int
	ResponseStatus     string
}

func (FlagsmithAPIError) Error

func (e FlagsmithAPIError) Error() string

type FlagsmithClientError

type FlagsmithClientError struct {
	// contains filtered or unexported fields
}

func (FlagsmithClientError) Error

func (e FlagsmithClientError) Error() string

type IdentityTraits

type IdentityTraits struct {
	Identifier string   `json:"identifier"`
	Traits     []*Trait `json:"traits"`
}

type LocalFileHandler added in v3.3.0

type LocalFileHandler struct {
	// contains filtered or unexported fields
}

func NewLocalFileHandler added in v3.3.0

func NewLocalFileHandler(environmentDocumentPath string) (*LocalFileHandler, error)

NewLocalFileHandler creates a new LocalFileHandler with the given path.

func (*LocalFileHandler) GetEnvironment added in v3.3.0

func (handler *LocalFileHandler) GetEnvironment() *environments.EnvironmentModel

type Logger

type Logger interface {
	// Errorf logs an error message with the given format and arguments.
	Errorf(format string, v ...interface{})

	// Warnf logs a warning message with the given format and arguments.
	Warnf(format string, v ...interface{})

	// Debugf logs a debug message with the given format and arguments.
	Debugf(format string, v ...interface{})
}

Logger is the interface used for logging by flagsmith client. This interface defines the methods that a logger implementation must implement. It is used to abstract logging and enable clients to use any logger implementation they want.

type OfflineHandler added in v3.3.0

type OfflineHandler interface {
	GetEnvironment() *environments.EnvironmentModel
}

type Option

type Option func(c *Client)

func WithAnalytics

func WithAnalytics(ctx context.Context) Option

WithAnalytics enables tracking of the usage of the Feature flags.

The goroutine responsible for asynchronously uploading the locally stored cache uses the context provided here, which means that if it expires the background process will exit.

func WithBaseURL

func WithBaseURL(url string) Option

func WithCustomHeaders

func WithCustomHeaders(headers map[string]string) Option

func WithDefaultHandler

func WithDefaultHandler(handler func(string) (Flag, error)) Option

func WithEnvironmentRefreshInterval

func WithEnvironmentRefreshInterval(interval time.Duration) Option

func WithErrorHandler added in v3.7.0

func WithErrorHandler(handler func(handler *FlagsmithAPIError)) Option

WithErrorHandler provides a way to handle errors that occur during update of an environment.

func WithLocalEvaluation

func WithLocalEvaluation(ctx context.Context) Option

WithLocalEvaluation enables local evaluation of the Feature flags.

The goroutine responsible for asynchronously updating the environment makes use of the context provided here, which means that if it expires the background process will exit.

func WithLogger

func WithLogger(logger Logger) Option

Allows the client to use any logger that implements the `Logger` interface.

func WithOfflineHandler added in v3.3.0

func WithOfflineHandler(handler OfflineHandler) Option

WithOfflineHandler returns an Option function that sets the offline handler.

func WithOfflineMode added in v3.3.0

func WithOfflineMode() Option

WithOfflineMode returns an Option function that enables the offline mode. NOTE: before using this option, you should set the offline handler.

func WithProxy

func WithProxy(proxyURL string) Option

WithProxy returns an Option function that sets the proxy(to be used by internal resty client). The proxyURL argument is a string representing the URL of the proxy server to use, e.g. "http://proxy.example.com:8080".

func WithRemoteEvaluation

func WithRemoteEvaluation() Option

func WithRequestTimeout

func WithRequestTimeout(timeout time.Duration) Option

func WithRetries

func WithRetries(count int, waitTime time.Duration) Option

type Trait

type Trait struct {
	TraitKey   string      `json:"trait_key"`
	TraitValue interface{} `json:"trait_value"`
}

func (*Trait) ToTraitModel

func (t *Trait) ToTraitModel() *traits.TraitModel

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL