1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2024-11-22 00:03:48 +00:00

start implement PaidMedia

This commit is contained in:
InsanusMokrassar 2024-07-02 23:18:36 +06:00
parent 47a8739db5
commit e02f74d77d

View File

@ -0,0 +1,105 @@
package dev.inmo.tgbotapi.types.payments.stars
import dev.inmo.tgbotapi.types.*
import dev.inmo.tgbotapi.types.files.PhotoSize
import kotlinx.serialization.EncodeDefault
import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
sealed interface PaidMedia {
val type: String
@Serializable
data class Preview(
@SerialName(widthField)
val width: Int? = null,
@SerialName(heightField)
val height: Int? = null,
@SerialName(durationField)
val duration: Int? = null
) : PaidMedia {
@EncodeDefault
@SerialName(typeField)
override val type: String = Companion.type
companion object {
val type: String = "preview"
}
}
@Serializable
data class Photo(
@SerialName(photoField)
val photo: Photo
) : PaidMedia {
@EncodeDefault
@SerialName(typeField)
override val type: String = Companion.type
companion object {
val type: String = "photo"
}
}
@Serializable
data class Video(
@SerialName(videoField)
val video: Video
) : PaidMedia {
@EncodeDefault
@SerialName(typeField)
override val type: String = Companion.type
companion object {
val type: String = "video"
}
}
@Serializable
data class Video(
@SerialName(videoField)
val video: Video
) : PaidMedia {
@EncodeDefault
@SerialName(typeField)
override val type: String = Companion.type
companion object {
val type: String = "video"
}
}
companion object : KSerializer<PaidMedia> {
@Serializable
private class Surrogate(
@SerialName(typeField)
val type: String,
@SerialName(widthField)
val width: Int? = null,
@SerialName(heightField)
val height: Int? = null,
@SerialName(durationField)
val duration: Int? = null,
@SerialName(photoField)
val photo: Photo? = null,
@SerialName(videoField)
val video: Video? = null
)
override val descriptor: SerialDescriptor
get() = TODO("Not yet implemented")
override fun deserialize(decoder: Decoder): PaidMedia {
TODO("Not yet implemented")
}
override fun serialize(encoder: Encoder, value: PaidMedia) {
TODO("Not yet implemented")
}
}
}