Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions pkg/odp/segment/segment_option.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,36 @@
// Package segment //
package segment

import "errors"

// OptimizelySegmentOption represents options controlling audience segments.
type OptimizelySegmentOption int
type OptimizelySegmentOption string

const (
// IgnoreCache ignores cache (save/lookup)
IgnoreCache OptimizelySegmentOption = iota
IgnoreCache OptimizelySegmentOption = "IGNORE_CACHE"
// ResetCache resets cache
ResetCache
ResetCache OptimizelySegmentOption = "RESET_CACHE"
)

// Options defines options for controlling audience segments.
type Options struct {
IgnoreCache bool
ResetCache bool
}

// TranslateOptions converts string options array to array of OptimizelySegmentOptions
func TranslateOptions(options []string) ([]OptimizelySegmentOption, error) {
segmentOptions := []OptimizelySegmentOption{}
for _, val := range options {
switch OptimizelySegmentOption(val) {
case IgnoreCache:
segmentOptions = append(segmentOptions, IgnoreCache)
case ResetCache:
segmentOptions = append(segmentOptions, ResetCache)
default:
return []OptimizelySegmentOption{}, errors.New("invalid option: " + val)
}
}
return segmentOptions, nil
}