mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2026-01-03 03:49:16 +00:00
Compare commits
2 Commits
d70c7fdbdf
...
86c86dfb8a
| Author | SHA1 | Date | |
|---|---|---|---|
| 86c86dfb8a | |||
| bdae774c62 |
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user