Add test for Push parsers.

This commit is contained in:
Benoit Marty 2023-04-06 16:58:29 +02:00 committed by Benoit Marty
parent d0fc9f23c8
commit 3c2542847c
5 changed files with 206 additions and 9 deletions

View file

@ -41,19 +41,19 @@ import kotlinx.serialization.Serializable
*/
@Serializable
data class PushDataUnifiedPush(
val notification: PushDataUnifiedPushNotification?
val notification: PushDataUnifiedPushNotification? = null
)
@Serializable
data class PushDataUnifiedPushNotification(
@SerialName("event_id") val eventId: String?,
@SerialName("room_id") val roomId: String?,
@SerialName("counts") var counts: PushDataUnifiedPushCounts?,
@SerialName("event_id") val eventId: String? = null,
@SerialName("room_id") val roomId: String? = null,
@SerialName("counts") var counts: PushDataUnifiedPushCounts? = null,
)
@Serializable
data class PushDataUnifiedPushCounts(
@SerialName("unread") val unread: Int?
@SerialName("unread") val unread: Int? = null
)
fun PushDataUnifiedPush.toPushData() = PushData(

View file

@ -23,7 +23,9 @@ import kotlinx.serialization.json.Json
import javax.inject.Inject
class UnifiedPushParser @Inject constructor() {
private val json by lazy { Json { ignoreUnknownKeys = true } }
fun parse(message: ByteArray): PushData? {
return tryOrNull { Json.decodeFromString<PushDataUnifiedPush>(String(message)) }?.toPushData()
return tryOrNull { json.decodeFromString<PushDataUnifiedPush>(String(message)) }?.toPushData()
}
}