Skip to content

Commit

Permalink
feat: Enable use of project API key for default deployments
Browse files Browse the repository at this point in the history
  • Loading branch information
tyiuhc committed Feb 1, 2024
1 parent c7bf92a commit fb0eed8
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 4 deletions.
10 changes: 6 additions & 4 deletions Sources/Experiment/Experiment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,16 @@ import AnalyticsConnector
@objc public static func initialize(apiKey: String, config: ExperimentConfig) -> ExperimentClient {
instancesLock.wait()
defer { instancesLock.signal() }
let usedKey = config.deploymentKey ?? apiKey
let instanceName = config.instanceName
let instanceKey = "\(instanceName).\(apiKey)"
let instanceKey = "\(instanceName).\(usedKey)"
let instance = instances[instanceKey]
if (instance != nil) {
return instance!
}
let storage = UserDefaultsStorage()
let newInstance: ExperimentClient = DefaultExperimentClient(
apiKey: apiKey,
apiKey: usedKey,
config: config,
storage: storage
)
Expand All @@ -38,8 +39,9 @@ import AnalyticsConnector
@objc public static func initializeWithAmplitudeAnalytics(apiKey: String, config: ExperimentConfig = ExperimentConfig()) -> ExperimentClient {
instancesLock.wait()
defer { instancesLock.signal() }
let usedKey = config.deploymentKey ?? apiKey
let instanceName = config.instanceName
let instanceKey = "\(instanceName).\(apiKey)"
let instanceKey = "\(instanceName).\(usedKey)"
let connector = AnalyticsConnector.getInstance(instanceName)
let instance = instances[instanceKey]
if (instance != nil) {
Expand All @@ -54,7 +56,7 @@ import AnalyticsConnector
}
let storage = UserDefaultsStorage()
let newInstance: ExperimentClient = DefaultExperimentClient(
apiKey: apiKey,
apiKey: usedKey,
config: configBuilder.build(),
storage: storage
)
Expand Down
20 changes: 20 additions & 0 deletions Sources/Experiment/ExperimentConfig.swift
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import Foundation
@available(*, deprecated, message: "Use exposureTrackingProvider instead.")
@objc public let analyticsProvider: ExperimentAnalyticsProvider?
@objc public let exposureTrackingProvider: ExposureTrackingProvider?
@objc public let deploymentKey: String?

@objc public override init() {
self.debug = ExperimentConfig.Defaults.debug
Expand All @@ -58,6 +59,7 @@ import Foundation
self.userProvider = ExperimentConfig.Defaults.userProvider
self.analyticsProvider = ExperimentConfig.Defaults.analyticsProvider
self.exposureTrackingProvider = ExperimentConfig.Defaults.exposureTrackingProvider
self.deploymentKey = ExperimentConfig.Defaults.deploymentKey
}

internal init(builder: ExperimentConfigBuilder) {
Expand All @@ -79,6 +81,7 @@ import Foundation
self.userProvider = builder.userProvider
self.analyticsProvider = builder.analyticsProvider
self.exposureTrackingProvider = builder.exposureTrackingProvider
self.deploymentKey = builder.deploymentKey
}

internal init(builder: ExperimentConfig.Builder) {
Expand All @@ -100,6 +103,7 @@ import Foundation
self.userProvider = builder.userProvider
self.analyticsProvider = builder.analyticsProvider
self.exposureTrackingProvider = builder.exposureTrackingProvider
self.deploymentKey = builder.deploymentKey
}

internal struct Defaults {
Expand All @@ -121,6 +125,7 @@ import Foundation
static let userProvider: ExperimentUserProvider? = nil
static let analyticsProvider: ExperimentAnalyticsProvider? = nil
static let exposureTrackingProvider: ExposureTrackingProvider? = nil
static let deploymentKey: String? = nil
}

@available(*, deprecated, message: "Use ExperimentConfigBuilder instead")
Expand All @@ -144,6 +149,7 @@ import Foundation
internal var userProvider: ExperimentUserProvider? = ExperimentConfig.Defaults.userProvider
internal var analyticsProvider: ExperimentAnalyticsProvider? = ExperimentConfig.Defaults.analyticsProvider
internal var exposureTrackingProvider: ExposureTrackingProvider? = ExperimentConfig.Defaults.exposureTrackingProvider
internal var deploymentKey: String? = ExperimentConfig.Defaults.deploymentKey

public init() {
// public init
Expand Down Expand Up @@ -261,6 +267,12 @@ import Foundation
self.exposureTrackingProvider = exposureTrackingProvider
return self
}

@discardableResult
public func deploymentKey(_ deploymentKey: String?) -> Builder {
self.deploymentKey = deploymentKey
return self
}

public func build() -> ExperimentConfig {
return ExperimentConfig(builder: self)
Expand Down Expand Up @@ -294,6 +306,7 @@ import Foundation
.userProvider(self.userProvider)
.analyticsProvider(self.analyticsProvider)
.exposureTrackingProvider(self.exposureTrackingProvider)
.deploymentKey(self.deploymentKey)
if let fetchOnStart = fetchOnStart {
builder.fetchOnStart(fetchOnStart)
}
Expand Down Expand Up @@ -321,6 +334,7 @@ import Foundation
internal var userProvider: ExperimentUserProvider? = ExperimentConfig.Defaults.userProvider
internal var analyticsProvider: ExperimentAnalyticsProvider? = ExperimentConfig.Defaults.analyticsProvider
internal var exposureTrackingProvider: ExposureTrackingProvider? = ExperimentConfig.Defaults.exposureTrackingProvider
internal var deploymentKey: String? = ExperimentConfig.Defaults.deploymentKey

@discardableResult
@objc public func debug(_ debug: Bool) -> ExperimentConfigBuilder {
Expand Down Expand Up @@ -434,6 +448,12 @@ import Foundation
return self
}

@discardableResult
@objc public func deploymentKey(_ deploymentKey: String?) -> ExperimentConfigBuilder {
self.deploymentKey = deploymentKey
return self
}

@objc public func build() -> ExperimentConfig {
return ExperimentConfig(builder: self)
}
Expand Down

0 comments on commit fb0eed8

Please sign in to comment.