![JAR search and dependency download from the Maven repository](/logo.png)
com.stytch.java.b2b.api.recoverycodes.RecoveryCodes.kt Maven / Gradle / Ivy
package com.stytch.java.b2b.api.recoverycodes
// !!!
// WARNING: This file is autogenerated
// Only modify code within MANUAL() sections
// or your changes may be overwritten later!
// !!!
import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi
import com.squareup.moshi.Types
import com.stytch.java.b2b.models.recoverycodes.GetRequest
import com.stytch.java.b2b.models.recoverycodes.GetResponse
import com.stytch.java.b2b.models.recoverycodes.RecoverRequest
import com.stytch.java.b2b.models.recoverycodes.RecoverResponse
import com.stytch.java.b2b.models.recoverycodes.RotateRequest
import com.stytch.java.b2b.models.recoverycodes.RotateResponse
import com.stytch.java.common.InstantAdapter
import com.stytch.java.common.StytchResult
import com.stytch.java.http.HttpClient
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.future.asCompletableFuture
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.util.concurrent.CompletableFuture
public interface RecoveryCodes {
/**
* Allows a Member to complete an MFA flow by consuming a recovery code. This consumes the recovery code and returns a
* session token that can be used to authenticate the Member.
*/
public suspend fun recover(data: RecoverRequest): StytchResult
/**
* Allows a Member to complete an MFA flow by consuming a recovery code. This consumes the recovery code and returns a
* session token that can be used to authenticate the Member.
*/
public fun recover(
data: RecoverRequest,
callback: (StytchResult) -> Unit,
)
/**
* Allows a Member to complete an MFA flow by consuming a recovery code. This consumes the recovery code and returns a
* session token that can be used to authenticate the Member.
*/
public fun recoverCompletable(data: RecoverRequest): CompletableFuture>
/**
* Returns a Member's full set of active recovery codes.
*/
public suspend fun get(data: GetRequest): StytchResult
/**
* Returns a Member's full set of active recovery codes.
*/
public fun get(
data: GetRequest,
callback: (StytchResult) -> Unit,
)
/**
* Returns a Member's full set of active recovery codes.
*/
public fun getCompletable(data: GetRequest): CompletableFuture>
/**
* Rotate a Member's recovery codes. This invalidates all existing recovery codes and generates a new set of recovery
* codes.
*/
public suspend fun rotate(data: RotateRequest): StytchResult
/**
* Rotate a Member's recovery codes. This invalidates all existing recovery codes and generates a new set of recovery
* codes.
*/
public fun rotate(
data: RotateRequest,
callback: (StytchResult) -> Unit,
)
/**
* Rotate a Member's recovery codes. This invalidates all existing recovery codes and generates a new set of recovery
* codes.
*/
public fun rotateCompletable(data: RotateRequest): CompletableFuture>
}
internal class RecoveryCodesImpl(
private val httpClient: HttpClient,
private val coroutineScope: CoroutineScope,
) : RecoveryCodes {
private val moshi = Moshi.Builder().add(InstantAdapter()).build()
override suspend fun recover(data: RecoverRequest): StytchResult =
withContext(Dispatchers.IO) {
var headers = emptyMap()
val asJson = moshi.adapter(RecoverRequest::class.java).toJson(data)
httpClient.post("/v1/b2b/recovery_codes/recover", asJson, headers)
}
override fun recover(
data: RecoverRequest,
callback: (StytchResult) -> Unit,
) {
coroutineScope.launch {
callback(recover(data))
}
}
override fun recoverCompletable(data: RecoverRequest): CompletableFuture> =
coroutineScope.async {
recover(data)
}.asCompletableFuture()
override suspend fun get(data: GetRequest): StytchResult =
withContext(Dispatchers.IO) {
var headers = emptyMap()
val asJson = moshi.adapter(GetRequest::class.java).toJson(data)
val type = Types.newParameterizedType(Map::class.java, String::class.java, Any::class.java)
val adapter: JsonAdapter
© 2015 - 2025 Weber Informatics LLC | Privacy Policy