Skip to content

Commit 92d3140

Browse files
Add factory method for DefaultCmabService
1 parent ebbde3c commit 92d3140

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

Sources/CMAB/CmabService.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,3 +175,12 @@ class DefaultCmabService: CmabService {
175175
return filteredUserAttributes
176176
}
177177
}
178+
179+
extension DefaultCmabService {
180+
static func createDefault() -> DefaultCmabService {
181+
let DEFAULT_CMAB_CACHE_TIMEOUT = 30 * 60 * 1000 // 30 minutes in milliseconds
182+
let DEFAULT_CMAB_CACHE_SIZE = 1000
183+
let cache = LruCache<String, CmabCacheValue>(size: DEFAULT_CMAB_CACHE_SIZE, timeoutInSecs: DEFAULT_CMAB_CACHE_TIMEOUT)
184+
return DefaultCmabService(cmabClient: DefaultCmabClient(), cmabCache: cache)
185+
}
186+
}

Sources/Implementation/DefaultDecisionService.swift

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,6 @@ struct VariationDecision {
3636

3737
typealias UserProfile = OPTUserProfileService.UPProfile
3838

39-
let DEFAULT_CMAB_CACHE_TIMEOUT = 30 * 60 * 1000 // 30 minutes in milliseconds
40-
let DEFAULT_CMAB_CACHE_SIZE = 1000
41-
4239
class DefaultDecisionService: OPTDecisionService {
4340
let bucketer: OPTBucketer
4441
let userProfileService: OPTUserProfileService
@@ -54,19 +51,16 @@ class DefaultDecisionService: OPTDecisionService {
5451
return threadSafeLogger.logger
5552
}
5653

57-
init(userProfileService: OPTUserProfileService) {
54+
init(userProfileService: OPTUserProfileService, cmabService: CmabService) {
5855
self.bucketer = DefaultBucketer()
59-
// fixme: cmab service need to inject from outside
6056
self.userProfileService = userProfileService
61-
let cache = LruCache<String, CmabCacheValue>(size: DEFAULT_CMAB_CACHE_SIZE, timeoutInSecs: DEFAULT_CMAB_CACHE_TIMEOUT)
62-
self.cmabService = DefaultCmabService(cmabClient: DefaultCmabClient(), cmabCache: cache)
57+
self.cmabService = cmabService
6358
}
6459

65-
init(userProfileService: OPTUserProfileService, bucketer: OPTBucketer) {
60+
init(userProfileService: OPTUserProfileService, bucketer: OPTBucketer, cmabService: CmabService) {
6661
self.bucketer = bucketer
6762
self.userProfileService = userProfileService
68-
let cache = LruCache<String, CmabCacheValue>(size: DEFAULT_CMAB_CACHE_SIZE, timeoutInSecs: DEFAULT_CMAB_CACHE_TIMEOUT)
69-
self.cmabService = DefaultCmabService(cmabClient: DefaultCmabClient(), cmabCache: cache)
63+
self.cmabService = cmabService
7064
}
7165

7266
// MARK: - CMAB decision

Sources/Optimizely/OptimizelyClient.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,13 @@ open class OptimizelyClient: NSObject {
108108
let logger = logger ?? DefaultLogger()
109109
type(of: logger).logLevel = defaultLogLevel ?? .info
110110

111+
let cmabService = DefaultCmabService.createDefault()
112+
111113
self.registerServices(sdkKey: sdkKey,
112114
logger: logger,
113115
eventDispatcher: eventDispatcher ?? DefaultEventDispatcher.sharedInstance,
114116
datafileHandler: datafileHandler ?? DefaultDatafileHandler(),
115-
decisionService: DefaultDecisionService(userProfileService: userProfileService),
117+
decisionService: DefaultDecisionService(userProfileService: userProfileService, cmabService: cmabService),
116118
notificationCenter: DefaultNotificationCenter())
117119

118120
self.logger = HandlerRegistryService.shared.injectLogger()

0 commit comments

Comments
 (0)