fun create()

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
        )
    }