commonMain.net.folivo.trixnity.clientserverapi.model.rooms.SendMessageEvent.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of trixnity-clientserverapi-model Show documentation
Show all versions of trixnity-clientserverapi-model Show documentation
Multiplatform Kotlin SDK for matrix-protocol
package net.folivo.trixnity.clientserverapi.model.rooms
import io.ktor.resources.*
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import net.folivo.trixnity.core.HttpMethod
import net.folivo.trixnity.core.HttpMethodType.PUT
import net.folivo.trixnity.core.MatrixEndpoint
import net.folivo.trixnity.core.model.RoomId
import net.folivo.trixnity.core.model.UserId
import net.folivo.trixnity.core.model.events.MessageEventContent
import net.folivo.trixnity.core.serialization.events.EventContentSerializerMappings
import net.folivo.trixnity.core.serialization.events.contentSerializer
/**
* @see matrix spec
*/
@Serializable
@Resource("/_matrix/client/v3/rooms/{roomId}/send/{type}/{txnId}")
@HttpMethod(PUT)
data class SendMessageEvent(
@SerialName("roomId") val roomId: RoomId,
@SerialName("type") val type: String,
@SerialName("txnId") val txnId: String,
@SerialName("user_id") val asUserId: UserId? = null,
@SerialName("ts") val ts: Long? = null,
) : MatrixEndpoint {
override fun requestSerializerBuilder(
mappings: EventContentSerializerMappings,
json: Json,
value: MessageEventContent?
): KSerializer {
return mappings.message.contentSerializer(type, value)
}
}