diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/github/UploadContentPayload.kt b/src/main/kotlin/cn/rtast/fancybot/entity/github/UploadContentPayload.kt new file mode 100644 index 0000000..a909485 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/github/UploadContentPayload.kt @@ -0,0 +1,13 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.entity.github + +data class UploadContentPayload( + val message: String, + val content: String, +) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/github/UploadContentResponse.kt b/src/main/kotlin/cn/rtast/fancybot/entity/github/UploadContentResponse.kt new file mode 100644 index 0000000..95bdde7 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/github/UploadContentResponse.kt @@ -0,0 +1,16 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.entity.github + +data class UploadContentResponse( + val content: Content +) { + data class Content( + val name: String, + ) +} \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/shortlink/ShortLinkPayload.kt b/src/main/kotlin/cn/rtast/fancybot/entity/shortlink/ShortLinkPayload.kt new file mode 100644 index 0000000..7f42c49 --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/shortlink/ShortLinkPayload.kt @@ -0,0 +1,12 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.entity.shortlink + +data class ShortLinkPayload( + val target: String +) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/entity/shortlink/ShortLinkResponse.kt b/src/main/kotlin/cn/rtast/fancybot/entity/shortlink/ShortLinkResponse.kt new file mode 100644 index 0000000..00dfd6c --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/entity/shortlink/ShortLinkResponse.kt @@ -0,0 +1,12 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.entity.shortlink + +data class ShortLinkResponse( + val id: String +) \ No newline at end of file diff --git a/src/main/kotlin/cn/rtast/fancybot/util/ImageBed.kt b/src/main/kotlin/cn/rtast/fancybot/util/ImageBed.kt new file mode 100644 index 0000000..49b42de --- /dev/null +++ b/src/main/kotlin/cn/rtast/fancybot/util/ImageBed.kt @@ -0,0 +1,31 @@ +/* + * Copyright © 2024 RTAkland + * Author: RTAkland + * Date: 2024/10/8 + */ + + +package cn.rtast.fancybot.util + +import cn.rtast.fancybot.configManager +import cn.rtast.fancybot.entity.github.UploadContentPayload +import cn.rtast.fancybot.entity.github.UploadContentResponse +import cn.rtast.fancybot.util.str.encodeToBase64 +import cn.rtast.fancybot.util.str.proxy +import cn.rtast.fancybot.util.str.toJson +import java.util.UUID + +object ImageBed { + + private val imageBedUrl = + "https://api.github.com/repos/${configManager.githubUser}/${configManager.githubImageRepo}/contents".proxy + + fun upload(file: ByteArray, fileType: String = ""): String { + val body = UploadContentPayload("uploadImage", file.encodeToBase64()).toJson() + val response = Http.put( + "$imageBedUrl/${UUID.randomUUID()}${if (fileType.isNotBlank()) ".$fileType" else ""}", body, + mapOf("Authorization" to "Bearer ${configManager.githubKey}") + ).content.name + return "https://raw.githubusercontent.com/${configManager.githubUser}/${configManager.githubImageRepo}/refs/heads/main/$response".proxy + } +} \ No newline at end of file