feat: add qq image bed

This commit is contained in:
2024-10-22 20:31:09 +08:00
parent 7511dfd37f
commit 0d73a29d34
3 files changed
+27 -19

No files matched your search

@@ -8,5 +8,5 @@
package cn.rtast.fancybot.enums
enum class ImageBedType {
Github, CloudflareR2
Github, CloudflareR2, QQ
}
@@ -15,6 +15,7 @@ import cn.rtast.fancybot.util.Http
import cn.rtast.fancybot.util.str.encodeToBase64
import cn.rtast.fancybot.util.str.proxy
import cn.rtast.fancybot.util.str.toJson
import cn.rtast.rob.ROneBotFactory
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
import software.amazon.awssdk.core.sync.RequestBody
@@ -43,9 +44,19 @@ object ImageBed {
.build()
}
fun upload(file: ByteArray, fileType: String = ""): String {
suspend fun upload(file: ByteArray, fileType: String = ""): String {
val randomUUID = UUID.randomUUID().toString()
if (configManager.imageBedType == ImageBedType.CloudflareR2) {
return when (configManager.imageBedType) {
ImageBedType.Github -> {
val body = UploadContentPayload("uploadImage", file.encodeToBase64()).toJson()
val response = Http.put<UploadContentResponse>(
"$imageBedUrl/${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
}
ImageBedType.CloudflareR2 -> {
val ft = if (fileType.isNotBlank()) ".$fileType" else ""
val key = "$randomUUID${ft}"
val putObjectRequest = PutObjectRequest.builder()
@@ -55,13 +66,9 @@ object ImageBed {
.build()
s3Client.putObject(putObjectRequest, RequestBody.fromBytes(file))
return "${configManager.cloudflareR2PublicUrl}/$key".proxy
} else {
val body = UploadContentPayload("uploadImage", file.encodeToBase64()).toJson()
val response = Http.put<UploadContentResponse>(
"$imageBedUrl/${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
}
ImageBedType.QQ -> ROneBotFactory.action.uploadImage(file.encodeToBase64(), true)
}
}
}
@@ -4,6 +4,7 @@
* Date: 2024/9/8
*/
@file:Suppress("unused")
package cn.rtast.fancybot.util.str