1 Commits

Author SHA1 Message Date
32f62ec5ab Add validation to notification 2021-04-14 23:53:19 +02:00
2 changed files with 16 additions and 2 deletions

View File

@@ -11,6 +11,8 @@ import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import fr.dcproject.common.entity.Entity
import fr.dcproject.component.article.database.ArticleForView
import io.konform.validation.Validation
import io.konform.validation.jsonschema.enum
import org.joda.time.DateTime
import java.util.concurrent.atomic.AtomicInteger
@@ -50,6 +52,14 @@ open class Notification(
inline fun <reified T : Notification> fromString(raw: String): T = mapper.readValue(raw)
}
fun getValidation() = Validation<Notification> {
Notification::type {
enum(
"article"
)
}
}
}
open class EntityNotification(

View File

@@ -1,6 +1,7 @@
package fr.dcproject.component.notification
import com.fasterxml.jackson.core.JsonProcessingException
import fr.dcproject.application.http.badRequestIfNotValid
import fr.dcproject.component.auth.citizen
import fr.dcproject.component.citizen.database.CitizenI
import io.ktor.http.cio.websocket.Frame
@@ -52,7 +53,10 @@ class NotificationsPush(
val incomingFlow: Flow<Notification> = ws.incoming.consumeAsFlow()
.mapNotNull<Frame, Text> { it as? Frame.Text }
.map { it.readText() }
.map { Notification.fromString(it) }
.map {
Notification.fromString<Notification>(it)
.apply { getValidation().validate(this).badRequestIfNotValid() }
}
return build(ws.call.citizen, incomingFlow) {
ws.outgoing.send(Text(it.toString()))