Valider les resource entrente #91
@@ -4,11 +4,14 @@ import com.github.jasync.sql.db.postgresql.exceptions.GenericDatabaseException
|
||||
import fr.dcproject.common.security.AccessDeniedException
|
||||
import fr.dcproject.component.auth.ForbiddenException
|
||||
import fr.dcproject.component.auth.user
|
||||
import io.konform.validation.ValidationResult
|
||||
import io.ktor.application.ApplicationCall
|
||||
import io.ktor.application.call
|
||||
import io.ktor.features.NotFoundException
|
||||
import io.ktor.features.StatusPages
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import io.ktor.response.respond
|
||||
import io.ktor.util.pipeline.PipelineContext
|
||||
import java.util.concurrent.CompletionException
|
||||
|
||||
class HttpError(
|
||||
@@ -27,6 +30,30 @@ class HttpError(
|
||||
)
|
||||
}
|
||||
|
||||
fun ValidationResult<*>.toOutput(): HttpError {
|
||||
return HttpError(
|
||||
HttpStatusCode.BadRequest,
|
||||
invalidParams = this.errors.map {
|
||||
HttpError.InvalidParam(
|
||||
it.dataPath,
|
||||
it.message
|
||||
)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
suspend fun PipelineContext<*, ApplicationCall>.respondIfNotValid(validationResult: ValidationResult<*>): HttpError? {
|
||||
if (validationResult.errors.size > 0) {
|
||||
val out = validationResult.toOutput()
|
||||
this.call.respond(
|
||||
HttpStatusCode.BadRequest,
|
||||
out
|
||||
)
|
||||
return out
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
fun statusPagesInstallation(): StatusPages.Configuration.() -> Unit = {
|
||||
exception<CompletionException> { e ->
|
||||
val parent = e.cause?.cause
|
||||
|
||||
Reference in New Issue
Block a user