in Confidence/src/main/java/com/spotify/confidence/RemoteFlagResolver.kt [39:64]
override suspend fun resolve(flags: List<String>, context: Map<String, ConfidenceValue>): Result<FlagResolution> {
val sdk = Sdk(sdkMetadata.sdkId, sdkMetadata.sdkVersion)
val request = ResolveFlagsRequest(flags.map { "flags/$it" }, context, clientSecret, false, sdk)
val response = withContext(dispatcher) {
val jsonRequest = Json.encodeToString(request)
val httpRequest = Request.Builder()
.url("${baseUrl()}/v1/flags:resolve")
.headers(headers)
.post(jsonRequest.toRequestBody())
.build()
httpClient.newCall(httpRequest).await().toResolveFlags()
}
return when (response) {
is ResolveResponse.Resolved -> {
val (flagList, resolveToken) = response.flags
Result.Success(FlagResolution(context, flagList.list, resolveToken))
}
is ResolveResponse.NotModified -> {
Result.Success(FlagResolution.EMPTY)
}
}
}