add js target

This commit is contained in:
InsanusMokrassar 2019-12-03 12:40:21 +06:00
parent b582adc3a0
commit 0c1df47dbb
13 changed files with 40 additions and 29 deletions

View File

@ -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"
}
}
}
}

View File

@ -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

View File

@ -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 {

View File

@ -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()
}
}
}

View File

@ -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()
}
}
}

View File

@ -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()
}
}
}

View File

@ -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

View File

@ -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

View File

@ -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()
}
}
}

View File

@ -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

View File

@ -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"
}

View File

@ -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()
}

View File

@ -1,5 +0,0 @@
package com.github.insanusmokrassar.TelegramBotAPI.utils
import kotlin.text.format
actual fun String.format(vararg args: Any?): String = format(*args)