SimpleNotes/api/src/validation/ValidationExtensions.kt

15 lines
482 B
Kotlin

package be.vandewalleh.validation
import am.ik.yavi.core.Validator
import am.ik.yavi.core.ViolationDetail
import io.ktor.application.*
import io.ktor.request.*
suspend inline fun <reified T : Any> ApplicationCall.receiveValidated(validator: Validator<T>): T {
val value: T = receive()
validator.validate(value).throwIfInvalid { ValidationException(it.details()) }
return value
}
data class ValidationException(val details: List<ViolationDetail>) : RuntimeException()