mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2024-12-22 16:47:13 +00:00
add js target
This commit is contained in:
parent
b582adc3a0
commit
0c1df47dbb
18
build.gradle
18
build.gradle
@ -31,15 +31,17 @@ repositories {
|
||||
|
||||
kotlin {
|
||||
jvm()
|
||||
// js()
|
||||
js()
|
||||
|
||||
sourceSets {
|
||||
commonMain {
|
||||
dependencies {
|
||||
implementation kotlin('stdlib')
|
||||
api "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlin_coroutines_version"
|
||||
api "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlin_coroutines_version"
|
||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$kotlin_serialisation_runtime_version"
|
||||
|
||||
api "com.soywiz.korlibs.klock:klock:$klock_version"
|
||||
api "com.benasher44:uuid:$uuid_version"
|
||||
|
||||
api "io.ktor:ktor-client-core:$ktor_version"
|
||||
}
|
||||
@ -68,10 +70,12 @@ kotlin {
|
||||
}
|
||||
}
|
||||
|
||||
// jsMain {
|
||||
// dependencies {
|
||||
// api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$kotlin_serialisation_runtime_version"
|
||||
// }
|
||||
// }
|
||||
jsMain {
|
||||
dependencies {
|
||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$kotlin_serialisation_runtime_version"
|
||||
api "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$kotlin_coroutines_version"
|
||||
api "io.ktor:ktor-client-js:$ktor_version"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ kotlin_version=1.3.61
|
||||
kotlin_coroutines_version=1.3.2
|
||||
kotlin_serialisation_runtime_version=0.14.0
|
||||
klock_version=1.8.0
|
||||
uuid_version=0.0.6
|
||||
ktor_version=1.2.6
|
||||
|
||||
gradle_bintray_plugin_version=1.8.4
|
||||
|
@ -3,7 +3,7 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.InputFile
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
const val inputMediaFileAttachmentNameTemplate = "attach://%s"
|
||||
fun String.toInputMediaFileAttachmentName() = "attach://$this"
|
||||
|
||||
@Serializable(InputMediaSerializer::class)
|
||||
interface InputMedia {
|
||||
|
@ -5,7 +5,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@ -27,7 +26,7 @@ data class InputMediaAnimation(
|
||||
get() = file.let {
|
||||
when (it) {
|
||||
is FileId -> it.fileId
|
||||
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(it.fileId)
|
||||
is MultipartFile -> it.fileId.toInputMediaFileAttachmentName()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@ -28,7 +27,7 @@ data class InputMediaAudio(
|
||||
get() = file.let {
|
||||
when (it) {
|
||||
is FileId -> it.fileId
|
||||
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(it.fileId)
|
||||
is MultipartFile -> it.fileId.toInputMediaFileAttachmentName()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@ -24,7 +23,7 @@ data class InputMediaDocument(
|
||||
get() = file.let {
|
||||
when (it) {
|
||||
is FileId -> it.fileId
|
||||
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(it.fileId)
|
||||
is MultipartFile -> it.fileId.toInputMediaFileAttachmentName()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
@ -22,7 +21,7 @@ data class InputMediaPhoto(
|
||||
@SerialName(mediaField)
|
||||
val media: String = when (file) {
|
||||
is FileId -> file.fileId
|
||||
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(file.fileId)
|
||||
is MultipartFile -> file.fileId.toInputMediaFileAttachmentName()
|
||||
}
|
||||
|
||||
@Transient
|
||||
|
@ -4,7 +4,6 @@ import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
|
||||
import kotlinx.serialization.*
|
||||
|
||||
@Serializable
|
||||
@ -25,7 +24,7 @@ data class InputMediaVideo(
|
||||
@SerialName(mediaField)
|
||||
val media: String = when (file) {
|
||||
is FileId -> file.fileId
|
||||
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(file.fileId)
|
||||
is MultipartFile -> file.fileId.toInputMediaFileAttachmentName()
|
||||
}
|
||||
|
||||
@Transient
|
||||
|
@ -2,7 +2,6 @@ package com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia
|
||||
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.types.thumbField
|
||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
|
||||
import kotlinx.serialization.SerialName
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@ -15,7 +14,7 @@ interface ThumbedInputMedia : InputMedia {
|
||||
get() = thumb ?.let {
|
||||
when (it) {
|
||||
is FileId -> it.fileId
|
||||
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(it.fileId)
|
||||
is MultipartFile -> it.fileId.toInputMediaFileAttachmentName()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -137,5 +137,3 @@ infix fun String.command(parseMode: ParseMode): String = when (parseMode) {
|
||||
is HTML -> commandHTML()
|
||||
is Markdown -> commandMarkdown()
|
||||
}
|
||||
|
||||
expect fun String.format(vararg args: Any?): String
|
||||
|
@ -0,0 +1,19 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.utils
|
||||
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.io.core.Input
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.Transient
|
||||
|
||||
@Serializable
|
||||
actual data class StorageFile(
|
||||
actual val contentType: String,
|
||||
actual val fileName: String,
|
||||
@Transient
|
||||
val inputGetter: () -> Input = throw IllegalStateException("Can't create object without input"),
|
||||
@Transient
|
||||
val extension: String = throw IllegalStateException("Can't create object without extension")
|
||||
) {
|
||||
actual fun asInput(): Input = inputGetter()
|
||||
actual fun generateCustomName(): String = "${uuid4()}.$extension"
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.utils
|
||||
|
||||
import com.benasher44.uuid.uuid4
|
||||
import kotlinx.io.core.Input
|
||||
import kotlinx.io.streams.asInput
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.Transient
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
import java.util.*
|
||||
|
||||
@Serializable
|
||||
actual class StorageFile(
|
||||
@ -15,6 +15,6 @@ actual class StorageFile(
|
||||
) {
|
||||
actual val contentType: String = Files.probeContentType(file.toPath())
|
||||
actual val fileName: String = file.name
|
||||
actual fun generateCustomName(): String = "${UUID.randomUUID()}.${file.extension}"
|
||||
actual fun generateCustomName(): String = "${uuid4()}.${file.extension}"
|
||||
actual fun asInput(): Input = Files.newInputStream(file.toPath()).asInput()
|
||||
}
|
||||
|
@ -1,5 +0,0 @@
|
||||
package com.github.insanusmokrassar.TelegramBotAPI.utils
|
||||
|
||||
import kotlin.text.format
|
||||
|
||||
actual fun String.format(vararg args: Any?): String = format(*args)
|
Loading…
Reference in New Issue
Block a user