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 GetLastModified(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, rayId, lastModified string, ...) 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, configEtag, rayId, lastModified 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 GetLastModified ¶ added in v2.14.0
func GetRawConfig ¶ added in v2.12.0
func SetClientCustomData ¶
func SetConfig ¶
func SetConfig(rawJSON []byte, sdkKey, etag, rayId, lastModified 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, configEtag, rayId, lastModified 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, configEtag, rayId, lastModified 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"` }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.