15 lines
482 B
Kotlin
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()
|