override suspend fun resolve()

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