in Confidence/src/main/java/com/spotify/confidence/Confidence.kt [329:383]
fun create(
context: Context,
clientSecret: String,
initialContext: Map<String, ConfidenceValue> = mapOf(),
region: ConfidenceRegion = ConfidenceRegion.GLOBAL,
dispatcher: CoroutineDispatcher = Dispatchers.IO,
loggingLevel: LoggingLevel = LoggingLevel.WARN,
timeoutMillis: Long = 10000
): Confidence {
val debugLogger: DebugLogger? = if (loggingLevel == LoggingLevel.NONE) {
null
} else {
DebugLoggerImpl(loggingLevel, clientSecret)
}
val engine = EventSenderEngineImpl.instance(
context,
clientSecret,
flushPolicies = listOf(minBatchSizeFlushPolicy),
sdkMetadata = SdkMetadata(SDK_ID, BuildConfig.SDK_VERSION),
dispatcher = dispatcher,
debugLogger = debugLogger
)
val flagApplierClient = FlagApplierClientImpl(
clientSecret,
SdkMetadata(SDK_ID, BuildConfig.SDK_VERSION),
region,
dispatcher
)
val flagResolver = RemoteFlagResolver(
clientSecret = clientSecret,
region = region,
httpClient = OkHttpClient.Builder()
.connectTimeout(timeoutMillis, TimeUnit.MILLISECONDS)
.callTimeout(timeoutMillis, TimeUnit.MILLISECONDS)
.build(),
dispatcher = dispatcher,
sdkMetadata = SdkMetadata(SDK_ID, BuildConfig.SDK_VERSION)
)
val visitorId = ConfidenceValue.String(VisitorUtil.getId(context))
val initContext = initialContext.toMutableMap()
initContext[VISITOR_ID_CONTEXT_KEY] = visitorId
debugLogger?.logContext("InitialContext", initContext)
return Confidence(
clientSecret,
dispatcher,
engine,
initialContext = initContext,
region = region,
flagResolver = flagResolver,
diskStorage = FileDiskStorage.create(context),
flagApplierClient = flagApplierClient,
debugLogger = debugLogger
)
}