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 { kotlin {
jvm() jvm()
// js() js()
sourceSets { sourceSets {
commonMain { commonMain {
dependencies { dependencies {
implementation kotlin('stdlib') 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 "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$kotlin_serialisation_runtime_version"
api "com.soywiz.korlibs.klock:klock:$klock_version" api "com.soywiz.korlibs.klock:klock:$klock_version"
api "com.benasher44:uuid:$uuid_version"
api "io.ktor:ktor-client-core:$ktor_version" api "io.ktor:ktor-client-core:$ktor_version"
} }
@ -68,10 +70,12 @@ kotlin {
} }
} }
// jsMain { jsMain {
// dependencies { dependencies {
// api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$kotlin_serialisation_runtime_version" 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_coroutines_version=1.3.2
kotlin_serialisation_runtime_version=0.14.0 kotlin_serialisation_runtime_version=0.14.0
klock_version=1.8.0 klock_version=1.8.0
uuid_version=0.0.6
ktor_version=1.2.6 ktor_version=1.2.6
gradle_bintray_plugin_version=1.8.4 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 com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.InputFile
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
const val inputMediaFileAttachmentNameTemplate = "attach://%s" fun String.toInputMediaFileAttachmentName() = "attach://$this"
@Serializable(InputMediaSerializer::class) @Serializable(InputMediaSerializer::class)
interface InputMedia { 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.ParseMode
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@ -27,7 +26,7 @@ data class InputMediaAnimation(
get() = file.let { get() = file.let {
when (it) { when (it) {
is FileId -> it.fileId 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.ParseMode
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@ -28,7 +27,7 @@ data class InputMediaAudio(
get() = file.let { get() = file.let {
when (it) { when (it) {
is FileId -> it.fileId 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.ParseMode
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@ -24,7 +23,7 @@ data class InputMediaDocument(
get() = file.let { get() = file.let {
when (it) { when (it) {
is FileId -> it.fileId 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.ParseMode.parseModeField
import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize import com.github.insanusmokrassar.TelegramBotAPI.types.files.PhotoSize
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
import kotlinx.serialization.* import kotlinx.serialization.*
@Serializable @Serializable
@ -22,7 +21,7 @@ data class InputMediaPhoto(
@SerialName(mediaField) @SerialName(mediaField)
val media: String = when (file) { val media: String = when (file) {
is FileId -> file.fileId is FileId -> file.fileId
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(file.fileId) is MultipartFile -> file.fileId.toInputMediaFileAttachmentName()
} }
@Transient @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.ParseMode
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField import com.github.insanusmokrassar.TelegramBotAPI.types.mediaField
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
import kotlinx.serialization.* import kotlinx.serialization.*
@Serializable @Serializable
@ -25,7 +24,7 @@ data class InputMediaVideo(
@SerialName(mediaField) @SerialName(mediaField)
val media: String = when (file) { val media: String = when (file) {
is FileId -> file.fileId is FileId -> file.fileId
is MultipartFile -> inputMediaFileAttachmentNameTemplate.format(file.fileId) is MultipartFile -> file.fileId.toInputMediaFileAttachmentName()
} }
@Transient @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.requests.abstracts.*
import com.github.insanusmokrassar.TelegramBotAPI.types.thumbField import com.github.insanusmokrassar.TelegramBotAPI.types.thumbField
import com.github.insanusmokrassar.TelegramBotAPI.utils.format
import kotlinx.serialization.SerialName import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@ -15,7 +14,7 @@ interface ThumbedInputMedia : InputMedia {
get() = thumb ?.let { get() = thumb ?.let {
when (it) { when (it) {
is FileId -> it.fileId 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 HTML -> commandHTML()
is Markdown -> commandMarkdown() 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 package com.github.insanusmokrassar.TelegramBotAPI.utils
import com.benasher44.uuid.uuid4
import kotlinx.io.core.Input import kotlinx.io.core.Input
import kotlinx.io.streams.asInput import kotlinx.io.streams.asInput
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.Transient import kotlinx.serialization.Transient
import java.io.File import java.io.File
import java.nio.file.Files import java.nio.file.Files
import java.util.*
@Serializable @Serializable
actual class StorageFile( actual class StorageFile(
@ -15,6 +15,6 @@ actual class StorageFile(
) { ) {
actual val contentType: String = Files.probeContentType(file.toPath()) actual val contentType: String = Files.probeContentType(file.toPath())
actual val fileName: String = file.name 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() 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)