
.experiment-jvm-server.1.2.0-proxy.11.source-code.RemoteEvaluationClient.kt Maven / Gradle / Ivy
package com.amplitude.experiment
import com.amplitude.experiment.evaluation.EvaluationVariant
import com.amplitude.experiment.util.BackoffConfig
import com.amplitude.experiment.util.Logger
import com.amplitude.experiment.util.backoff
import com.amplitude.experiment.util.filterDefaultVariants
import com.amplitude.experiment.util.json
import com.amplitude.experiment.util.toJson
import com.amplitude.experiment.util.toVariants
import kotlinx.serialization.decodeFromString
import okhttp3.Call
import okhttp3.Callback
import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.Response
import okio.IOException
import java.util.concurrent.CompletableFuture
import java.util.concurrent.TimeUnit
class RemoteEvaluationClient internal constructor(
private val apiKey: String,
private val config: RemoteEvaluationConfig = RemoteEvaluationConfig(),
) {
private val httpClient = OkHttpClient()
private val retry: Boolean = config.fetchRetries > 0
private val serverUrl: HttpUrl = config.serverUrl.toHttpUrl()
private val backoffConfig = BackoffConfig(
attempts = config.fetchRetries,
min = config.fetchRetryBackoffMinMillis,
max = config.fetchRetryBackoffMaxMillis,
scalar = config.fetchRetryBackoffScalar,
)
@Deprecated(
"Use the fetchV2 method. FetchV2 returns variant objects with default values (e.g. null/off) if the user is evaluated, but not assigned a variant.",
ReplaceWith("fetchV2(user)")
)
fun fetch(user: ExperimentUser): CompletableFuture
© 2015 - 2025 Weber Informatics LLC | Privacy Policy