From 0c1df47dbb8e35ef4626fc6bec777a6523625c90 Mon Sep 17 00:00:00 2001 From: InsanusMokrassar Date: Tue, 3 Dec 2019 12:40:21 +0600 Subject: [PATCH] add js target --- build.gradle | 18 +++++++++++------- gradle.properties | 1 + .../types/InputMedia/InputMedia.kt | 2 +- .../types/InputMedia/InputMediaAnimation.kt | 3 +-- .../types/InputMedia/InputMediaAudio.kt | 3 +-- .../types/InputMedia/InputMediaDocument.kt | 3 +-- .../types/InputMedia/InputMediaPhoto.kt | 3 +-- .../types/InputMedia/InputMediaVideo.kt | 3 +-- .../types/InputMedia/ThumbedInputMedia.kt | 3 +-- .../TelegramBotAPI/utils/StringFormatting.kt | 2 -- .../TelegramBotAPI/utils/StorageFile.kt | 19 +++++++++++++++++++ .../TelegramBotAPI/utils/StorageFile.kt | 4 ++-- .../utils/StringFormatActual.kt | 5 ----- 13 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 src/jsMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt delete mode 100644 src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatActual.kt diff --git a/build.gradle b/build.gradle index 1508ddcf8f..556ba50fe5 100644 --- a/build.gradle +++ b/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" + } + } } } diff --git a/gradle.properties b/gradle.properties index 2313f49f91..661eb0ae84 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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 diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMedia.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMedia.kt index 41ec671ded..800795a2db 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMedia.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMedia.kt @@ -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 { diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAnimation.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAnimation.kt index ac03b3ec51..1fb4cfdbbf 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAnimation.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAnimation.kt @@ -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() } } } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt index db210c3742..c63592243c 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaAudio.kt @@ -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() } } } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaDocument.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaDocument.kt index 0b2418d3bd..38cd9ac283 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaDocument.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaDocument.kt @@ -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() } } } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt index 75b256e34d..2e5ea13d13 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaPhoto.kt @@ -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 diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt index 5441ea3855..faf5a15f3c 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/InputMediaVideo.kt @@ -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 diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/ThumbedInputMedia.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/ThumbedInputMedia.kt index 9b0e8ad5fa..c94e1c430f 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/ThumbedInputMedia.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/InputMedia/ThumbedInputMedia.kt @@ -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() } } } diff --git a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt index a053b57a1c..1eb31850c4 100644 --- a/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt +++ b/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatting.kt @@ -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 diff --git a/src/jsMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt b/src/jsMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt new file mode 100644 index 0000000000..8f236a770f --- /dev/null +++ b/src/jsMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt @@ -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" +} \ No newline at end of file diff --git a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt index b0aaba6b20..03ea499383 100644 --- a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt +++ b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StorageFile.kt @@ -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() } diff --git a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatActual.kt b/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatActual.kt deleted file mode 100644 index bb1ff47fd4..0000000000 --- a/src/jvmMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/utils/StringFormatActual.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.insanusmokrassar.TelegramBotAPI.utils - -import kotlin.text.format - -actual fun String.format(vararg args: Any?): String = format(*args)