1
0
mirror of https://github.com/InsanusMokrassar/TelegramBotAPI.git synced 2026-01-03 03:49:16 +00:00

Compare commits

...

2 Commits

2 changed files with 32 additions and 19 deletions

View File

@@ -9,6 +9,7 @@ import dev.inmo.tgbotapi.bot.exceptions.newRequestException
import dev.inmo.tgbotapi.requests.GetUpdatesRequest import dev.inmo.tgbotapi.requests.GetUpdatesRequest
import dev.inmo.tgbotapi.requests.abstracts.Request import dev.inmo.tgbotapi.requests.abstracts.Request
import dev.inmo.tgbotapi.types.Response import dev.inmo.tgbotapi.types.Response
import dev.inmo.tgbotapi.types.message.textsources.pre
import dev.inmo.tgbotapi.utils.DefaultKTgBotAPIKSLog import dev.inmo.tgbotapi.utils.DefaultKTgBotAPIKSLog
import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper import dev.inmo.tgbotapi.utils.TelegramAPIUrlsKeeper
import io.ktor.client.HttpClient import io.ktor.client.HttpClient
@@ -16,6 +17,7 @@ import io.ktor.client.plugins.timeout
import io.ktor.client.request.* import io.ktor.client.request.*
import io.ktor.client.statement.bodyAsText import io.ktor.client.statement.bodyAsText
import io.ktor.http.ContentType import io.ktor.http.ContentType
import io.ktor.http.content.*
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlin.collections.set import kotlin.collections.set
@@ -33,7 +35,14 @@ abstract class AbstractRequestCallFactory(
jsonFormatter: Json jsonFormatter: Json
): T? { ): T? {
val preparedBody = prepareCallBody(client, urlsKeeper, request) ?: return null val preparedBody = prepareCallBody(client, urlsKeeper, request) ?: return null
logger.v { "Prepared body for $request: $preparedBody" } logger.v {
val bodyValue = if (preparedBody is TextContent) {
preparedBody.text
} else {
preparedBody.toString()
}
"Prepared body for $request: $bodyValue"
}
client.post { client.post {
url( url(

View File

@@ -1,9 +1,6 @@
package dev.inmo.tgbotapi.types package dev.inmo.tgbotapi.types
import kotlinx.serialization.KSerializer import kotlinx.serialization.*
import kotlinx.serialization.Required
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import kotlinx.serialization.descriptors.SerialDescriptor import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder import kotlinx.serialization.encoding.Encoder
@@ -16,9 +13,10 @@ sealed interface LinkPreviewOptions {
val preferLargeMedia: Boolean val preferLargeMedia: Boolean
val showAboveText: Boolean val showAboveText: Boolean
@Serializable @Serializable(LinkPreviewOptions.Companion::class)
data object Disabled : LinkPreviewOptions { data object Disabled : LinkPreviewOptions {
@Required @Required
@EncodeDefault
@SerialName(isDisabledField) @SerialName(isDisabledField)
override val isDisabled: Boolean = true override val isDisabled: Boolean = true
override val url: String? override val url: String?
@@ -31,7 +29,7 @@ sealed interface LinkPreviewOptions {
get() = false get() = false
} }
@Serializable @Serializable(LinkPreviewOptions.Companion::class)
data class Large( data class Large(
@SerialName(urlField) @SerialName(urlField)
override val url: String?, override val url: String?,
@@ -39,16 +37,18 @@ sealed interface LinkPreviewOptions {
override val showAboveText: Boolean override val showAboveText: Boolean
) : LinkPreviewOptions { ) : LinkPreviewOptions {
@Required @Required
@EncodeDefault
@SerialName(isDisabledField) @SerialName(isDisabledField)
override val isDisabled: Boolean = false override val isDisabled: Boolean = false
@Required @Required
@EncodeDefault
@SerialName(preferLargeMediaField) @SerialName(preferLargeMediaField)
override val preferLargeMedia: Boolean = true override val preferLargeMedia: Boolean = true
override val preferSmallMedia: Boolean override val preferSmallMedia: Boolean
get() = false get() = false
} }
@Serializable @Serializable(LinkPreviewOptions.Companion::class)
data class Small( data class Small(
@SerialName(urlField) @SerialName(urlField)
override val url: String?, override val url: String?,
@@ -56,16 +56,18 @@ sealed interface LinkPreviewOptions {
override val showAboveText: Boolean override val showAboveText: Boolean
) : LinkPreviewOptions { ) : LinkPreviewOptions {
@Required @Required
@EncodeDefault
@SerialName(isDisabledField) @SerialName(isDisabledField)
override val isDisabled: Boolean = false override val isDisabled: Boolean = false
@Required @Required
@EncodeDefault
@SerialName(preferSmallMediaField) @SerialName(preferSmallMediaField)
override val preferSmallMedia: Boolean = true override val preferSmallMedia: Boolean = true
override val preferLargeMedia: Boolean override val preferLargeMedia: Boolean
get() = false get() = false
} }
@Serializable @Serializable(LinkPreviewOptions.Companion::class)
data class Default( data class Default(
@SerialName(urlField) @SerialName(urlField)
override val url: String?, override val url: String?,
@@ -73,6 +75,7 @@ sealed interface LinkPreviewOptions {
override val showAboveText: Boolean override val showAboveText: Boolean
) : LinkPreviewOptions { ) : LinkPreviewOptions {
@Required @Required
@EncodeDefault
@SerialName(isDisabledField) @SerialName(isDisabledField)
override val isDisabled: Boolean = false override val isDisabled: Boolean = false
override val preferSmallMedia: Boolean override val preferSmallMedia: Boolean
@@ -93,9 +96,7 @@ sealed interface LinkPreviewOptions {
val preferLargeMedia: Boolean = false, val preferLargeMedia: Boolean = false,
@SerialName(showAboveTextField) @SerialName(showAboveTextField)
val showAboveText: Boolean = false, val showAboveText: Boolean = false,
) { )
}
companion object : KSerializer<LinkPreviewOptions> { companion object : KSerializer<LinkPreviewOptions> {
override val descriptor: SerialDescriptor override val descriptor: SerialDescriptor
@@ -113,13 +114,16 @@ sealed interface LinkPreviewOptions {
} }
override fun serialize(encoder: Encoder, value: LinkPreviewOptions) { override fun serialize(encoder: Encoder, value: LinkPreviewOptions) {
when (value) { Surrogate.serializer().serialize(
is Disabled -> Disabled.serializer().serialize(encoder, value) encoder,
is Large -> Large.serializer().serialize(encoder, value) Surrogate(
is Default -> Default.serializer().serialize(encoder, value) isDisabled = value.isDisabled,
is Small -> Small.serializer().serialize(encoder, value) url = value.url,
} preferSmallMedia = value.preferSmallMedia,
preferLargeMedia = value.preferLargeMedia,
showAboveText = value.showAboveText
)
)
} }
} }
} }