Documentation
¶
Index ¶
- Constants
- Variables
- func BucketResultErrorToDefaultReason(err error) (defaultReason string)
- func GenerateBucketedConfig(sdkKey string, user api.PopulatedUser, clientCustomData map[string]interface{}) (*api.BucketedUserConfig, error)
- func GetClientCustomData(sdkKey string) map[string]interface{}
- func GetEtag(sdkKey string) string
- func GetRawConfig(sdkKey string) []byte
- func GetRayId(sdkKey string) string
- func HasConfig(sdkKey string) bool
- func SetClientCustomData(sdkKey string, data map[string]interface{})
- func SetConfig(rawJSON []byte, sdkKey, etag string, rayId string, eventQueue ...*EventQueue) error
- func VariableForUser(sdkKey string, user api.PopulatedUser, variableKey string, ...) (variableType string, variableValue any, err error)
- type AggregateEventQueue
- type AllFilter
- type Audience
- type AudienceMatchFilter
- func (filter *AudienceMatchFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, ...) bool
- func (f AudienceMatchFilter) GetComparator() string
- func (f AudienceMatchFilter) GetSubType() string
- func (f AudienceMatchFilter) GetType() string
- func (f AudienceMatchFilter) Type() string
- type AudienceOperator
- type ConfigFeature
- type CustomDataFilter
- func (filter *CustomDataFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, ...) bool
- func (f CustomDataFilter) GetComparator() string
- func (f CustomDataFilter) GetSubType() string
- func (f CustomDataFilter) GetType() string
- func (f CustomDataFilter) SubType() string
- func (f CustomDataFilter) Type() string
- type EventQueue
- func (eq *EventQueue) Close() (err error)
- func (eq *EventQueue) FlushEventQueue(clientUUID string, configEtag string, rayId string) (map[string]api.FlushPayload, error)
- func (eq *EventQueue) HandleFlushResults(successPayloads []string, failurePayloads []string, ...)
- func (eq *EventQueue) MergeAggEventQueueKeys(config *configBody)
- func (eq *EventQueue) Metrics() (int32, int32, int32)
- func (eq *EventQueue) QueueEvent(user api.User, event api.Event) error
- func (eq *EventQueue) QueueVariableDefaultedEvent(variableKey, defaultReason string) error
- func (eq *EventQueue) QueueVariableEvaluatedEvent(variableKey, featureId, variationId string) error
- func (eq *EventQueue) UserQueueLength() int
- type FeatureAggMap
- type FeatureConfiguration
- type FeaturePrerequisites
- type FilterOrOperator
- type InitializedFilter
- type MixedFilters
- type NativeBucketingConfiguration
- type NoIdAudience
- type NoPassFilter
- type OptInFilter
- type OptionsType
- type PassFilter
- type Rollout
- type RolloutStage
- type Target
- type TargetDistribution
- type UserEventQueue
- type UserFilter
- type Variable
- type VariableAggMap
- type Variation
- type VariationAggMap
- type VariationVariable
Constants ¶
View Source
const ( OperatorAnd = "and" OperatorOr = "or" )
View Source
const ( VariableEvaluatedEvent = "variableEvaluated" VariableDefaultedEvent = "variableDefaulted" AggVariableEvaluatedEvent = "aggVariableEvaluated" AggVariableDefaultedEvent = "aggVariableDefaulted" )
View Source
const ( TypeAll = "all" TypeUser = "user" TypeOptIn = "optIn" TypeAudienceMatch = "audienceMatch" )
View Source
const ( SubTypeUserID = "user_id" SubTypeEmail = "email" SubTypeIP = "ip" SubTypeCountry = "country" SubTypePlatform = "platform" SubTypePlatformVersion = "platformVersion" SubTypeAppVersion = "appVersion" SubTypeDeviceModel = "deviceModel" SubTypeCustomData = "customData" )
View Source
const ( ComparatorEqual = "=" ComparatorNotEqual = "!=" ComparatorGreater = ">" ComparatorGreaterEqual = ">=" ComparatorLess = "<" ComparatorLessEqual = "<=" ComparatorExist = "exist" ComparatorNotExist = "!exist" ComparatorContain = "contain" ComparatorNotContain = "!contain" )
View Source
const ( DataKeyTypeString = "String" DataKeyTypeBoolean = "Boolean" DataKeyTypeNumber = "Number" )
View Source
const ( VariableTypesString = "String" VariableTypesNumber = "Number" VariableTypesJSON = "JSON" VariableTypesBool = "Boolean" )
Variables ¶
View Source
var ErrConfigMissing = errors.New("No config available")
View Source
var ErrFailedToDecideVariation = errors.New("Failed to decide target variation")
View Source
var ErrInvalidVariableType = errors.New("Invalid variable type")
View Source
var ErrMissingFeature = errors.New("Config missing feature for variable")
View Source
var ErrMissingVariable = errors.New("Config missing variable")
View Source
var ErrMissingVariableForVariation = errors.New("Config missing variable for variation")
View Source
var ErrMissingVariation = errors.New("Config missing variation")
View Source
var ErrQueueFull = fmt.Errorf("Max queue size reached")
View Source
var ErrUserDoesNotQualifyForTargets = errors.New("User does not qualify for any targets for feature")
View Source
var ErrUserRollout = errors.New("User does not qualify for feature rollout")
Functions ¶
func BucketResultErrorToDefaultReason ¶ added in v2.12.0
func GenerateBucketedConfig ¶
func GenerateBucketedConfig(sdkKey string, user api.PopulatedUser, clientCustomData map[string]interface{}) (*api.BucketedUserConfig, error)
func GetClientCustomData ¶
func GetRawConfig ¶ added in v2.12.0
func SetClientCustomData ¶
func SetConfig ¶
func SetConfig(rawJSON []byte, sdkKey, etag string, rayId string, eventQueue ...*EventQueue) error
func VariableForUser ¶
func VariableForUser(sdkKey string, user api.PopulatedUser, variableKey string, expectedVariableType string, eventQueue *EventQueue, clientCustomData map[string]interface{}) (variableType string, variableValue any, err error)
Types ¶
type AggregateEventQueue ¶
type AggregateEventQueue map[string]VariableAggMap
func (*AggregateEventQueue) BuildBatchRecords ¶
func (agg *AggregateEventQueue) BuildBatchRecords(platformData *api.PlatformData, clientUUID string, configEtag string, rayId string) api.UserEventsBatchRecord
type AllFilter ¶ added in v2.10.4
type AllFilter struct {
PassFilter
}
type Audience ¶
type Audience struct {
NoIdAudience
Id string `json:"_id"`
}
type AudienceMatchFilter ¶
type AudienceMatchFilter struct {
Audiences []string `json:"_audiences"`
// contains filtered or unexported fields
}
func (*AudienceMatchFilter) Evaluate ¶ added in v2.10.4
func (filter *AudienceMatchFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
func (AudienceMatchFilter) GetComparator ¶
func (f AudienceMatchFilter) GetComparator() string
func (AudienceMatchFilter) GetSubType ¶
func (f AudienceMatchFilter) GetSubType() string
func (AudienceMatchFilter) Type ¶
func (f AudienceMatchFilter) Type() string
type AudienceOperator ¶
type AudienceOperator struct {
Operator string `json:"operator"`
Filters MixedFilters `json:"filters"`
}
func (AudienceOperator) Evaluate ¶ added in v2.10.4
func (operator AudienceOperator) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
func (AudienceOperator) GetFilters ¶
func (o AudienceOperator) GetFilters() []FilterOrOperator
func (AudienceOperator) GetOperator ¶
func (o AudienceOperator) GetOperator() string
type ConfigFeature ¶
type ConfigFeature struct {
Id string `json:"_id"`
Type string `json:"type" validate:"regexp=^(release|experiment|permission|ops)$"`
Key string `json:"key"`
Variations []*Variation `json:"variations"`
Configuration FeatureConfiguration `json:"configuration"`
Settings map[string]interface{} `json:"settings"`
}
type CustomDataFilter ¶
type CustomDataFilter struct {
*UserFilter
DataKey string `json:"dataKey"`
DataKeyType string `json:"dataKeyType" validate:"regexp=^(String|Boolean|Number)$"`
}
func (*CustomDataFilter) Evaluate ¶ added in v2.10.4
func (filter *CustomDataFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
func (CustomDataFilter) GetComparator ¶
func (f CustomDataFilter) GetComparator() string
func (CustomDataFilter) GetSubType ¶
func (f CustomDataFilter) GetSubType() string
func (CustomDataFilter) SubType ¶
func (f CustomDataFilter) SubType() string
func (CustomDataFilter) Type ¶
func (f CustomDataFilter) Type() string
type EventQueue ¶
type EventQueue struct {
// contains filtered or unexported fields
}
func NewEventQueue ¶
func NewEventQueue(sdkKey string, options *api.EventQueueOptions, platformData *api.PlatformData) (*EventQueue, error)
func (*EventQueue) Close ¶
func (eq *EventQueue) Close() (err error)
func (*EventQueue) FlushEventQueue ¶
func (eq *EventQueue) FlushEventQueue(clientUUID string, configEtag string, rayId string) (map[string]api.FlushPayload, error)
func (*EventQueue) HandleFlushResults ¶
func (eq *EventQueue) HandleFlushResults(successPayloads []string, failurePayloads []string, failureWithRetryPayloads []string)
func (*EventQueue) MergeAggEventQueueKeys ¶
func (eq *EventQueue) MergeAggEventQueueKeys(config *configBody)
func (*EventQueue) QueueEvent ¶
func (*EventQueue) QueueVariableDefaultedEvent ¶ added in v2.12.0
func (eq *EventQueue) QueueVariableDefaultedEvent(variableKey, defaultReason string) error
func (*EventQueue) QueueVariableEvaluatedEvent ¶
func (eq *EventQueue) QueueVariableEvaluatedEvent(variableKey, featureId, variationId string) error
func (*EventQueue) UserQueueLength ¶
func (eq *EventQueue) UserQueueLength() int
type FeatureAggMap ¶
type FeatureAggMap map[string]VariationAggMap
type FeatureConfiguration ¶
type FeatureConfiguration struct {
Id string `json:"_id"`
Prerequisites []FeaturePrerequisites `json:"prerequisites"`
WinningVariation api.FeatureVariation `json:"winningVariation"`
ForcedUsers map[string]string `json:"forcedUsers"`
Targets []*Target `json:"targets"`
}
type FeaturePrerequisites ¶
type FilterOrOperator ¶ added in v2.10.4
type FilterOrOperator interface {
Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
}
A FilterOrOperator represents either an individual filter or a nested sequence of filters with a logical operator.
type InitializedFilter ¶
type InitializedFilter interface {
Initialize() error
}
For compiling values inside a filter after parsing, or other optimizations
type MixedFilters ¶
type MixedFilters []FilterOrOperator
MixedFilters is used to parse a list of generic filters from JSON that can be one of several types, and transform them into specific implementations (e.g. UserFilter).
func (*MixedFilters) UnmarshalJSON ¶
func (m *MixedFilters) UnmarshalJSON(data []byte) error
type NoIdAudience ¶
type NoIdAudience struct {
Filters *AudienceOperator `json:"filters"`
}
type NoPassFilter ¶ added in v2.10.4
type NoPassFilter struct{}
func (NoPassFilter) Evaluate ¶ added in v2.10.4
func (filter NoPassFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
type OptInFilter ¶ added in v2.10.4
type OptInFilter struct {
NoPassFilter
}
OptInFilter never passes, because it's only supported by Cloud Bucketing.
type OptionsType ¶
type PassFilter ¶ added in v2.10.4
type PassFilter struct{}
func (PassFilter) Evaluate ¶ added in v2.10.4
func (filter PassFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
type Rollout ¶
type Rollout struct {
Type string `json:"type" validate:"regexp=^(schedule|gradual|stepped)$"`
StartPercentage float64 `json:"startPercentage"`
StartDate time.Time `json:"startDate"`
Stages []RolloutStage `json:"stages"`
}
type RolloutStage ¶
type Target ¶
type Target struct {
Id string `json:"_id"`
Audience *Audience `json:"_audience"`
Rollout *Rollout `json:"rollout"`
Distribution []TargetDistribution `json:"distribution"`
}
type TargetDistribution ¶
type UserEventQueue ¶
type UserEventQueue map[string]api.UserEventsBatchRecord
func (*UserEventQueue) BuildBatchRecords ¶
func (u *UserEventQueue) BuildBatchRecords() []api.UserEventsBatchRecord
type UserFilter ¶
type UserFilter struct {
Values []interface{} `json:"values"`
CompiledStringVals []string
CompiledBoolVals []bool
CompiledNumVals []float64
// contains filtered or unexported fields
}
func (*UserFilter) Evaluate ¶ added in v2.10.4
func (filter *UserFilter) Evaluate(audiences map[string]NoIdAudience, user api.PopulatedUser, clientCustomData map[string]interface{}) bool
func (UserFilter) GetComparator ¶
func (f UserFilter) GetComparator() string
func (UserFilter) GetSubType ¶
func (f UserFilter) GetSubType() string
func (*UserFilter) Initialize ¶
func (f *UserFilter) Initialize() error
func (UserFilter) Type ¶
func (f UserFilter) Type() string
type VariableAggMap ¶
type VariableAggMap map[string]FeatureAggMap
type Variation ¶
type Variation struct {
Id string `json:"_id"`
Name string `json:"name"`
Key string `json:"key"`
Variables []VariationVariable `json:"variables"`
}
func (*Variation) GetVariableById ¶
func (v *Variation) GetVariableById(id string) *VariationVariable
type VariationAggMap ¶
type VariationVariable ¶
type VariationVariable struct {
Var string `json:"_var"`
Value interface{} `json:"value"`
}
Click to show internal directories.
Click to hide internal directories.