feat: add qq image bed
This commit is contained in:
3 files changed
+27
-19
No files matched your search
@@ -8,5 +8,5 @@
|
|||||||
package cn.rtast.fancybot.enums
|
package cn.rtast.fancybot.enums
|
||||||
|
|
||||||
enum class ImageBedType {
|
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.encodeToBase64
|
||||||
import cn.rtast.fancybot.util.str.proxy
|
import cn.rtast.fancybot.util.str.proxy
|
||||||
import cn.rtast.fancybot.util.str.toJson
|
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.AwsBasicCredentials
|
||||||
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
|
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
|
||||||
import software.amazon.awssdk.core.sync.RequestBody
|
import software.amazon.awssdk.core.sync.RequestBody
|
||||||
@@ -43,25 +44,31 @@ object ImageBed {
|
|||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun upload(file: ByteArray, fileType: String = ""): String {
|
suspend fun upload(file: ByteArray, fileType: String = ""): String {
|
||||||
val randomUUID = UUID.randomUUID().toString()
|
val randomUUID = UUID.randomUUID().toString()
|
||||||
if (configManager.imageBedType == ImageBedType.CloudflareR2) {
|
return when (configManager.imageBedType) {
|
||||||
val ft = if (fileType.isNotBlank()) ".$fileType" else ""
|
ImageBedType.Github -> {
|
||||||
val key = "$randomUUID${ft}"
|
val body = UploadContentPayload("uploadImage", file.encodeToBase64()).toJson()
|
||||||
val putObjectRequest = PutObjectRequest.builder()
|
val response = Http.put<UploadContentResponse>(
|
||||||
.bucket(configManager.cloudflareR2BucketName)
|
"$imageBedUrl/${randomUUID}${if (fileType.isNotBlank()) ".$fileType" else ""}", body,
|
||||||
.contentType("image/${ft.replace(".", "")}")
|
mapOf("Authorization" to "Bearer ${configManager.githubKey}")
|
||||||
.key(key)
|
).content.name
|
||||||
.build()
|
return "https://raw.githubusercontent.com/${configManager.githubUser}/${configManager.githubImageRepo}/refs/heads/main/$response".proxy
|
||||||
s3Client.putObject(putObjectRequest, RequestBody.fromBytes(file))
|
}
|
||||||
return "${configManager.cloudflareR2PublicUrl}/$key".proxy
|
|
||||||
} else {
|
ImageBedType.CloudflareR2 -> {
|
||||||
val body = UploadContentPayload("uploadImage", file.encodeToBase64()).toJson()
|
val ft = if (fileType.isNotBlank()) ".$fileType" else ""
|
||||||
val response = Http.put<UploadContentResponse>(
|
val key = "$randomUUID${ft}"
|
||||||
"$imageBedUrl/${randomUUID}${if (fileType.isNotBlank()) ".$fileType" else ""}", body,
|
val putObjectRequest = PutObjectRequest.builder()
|
||||||
mapOf("Authorization" to "Bearer ${configManager.githubKey}")
|
.bucket(configManager.cloudflareR2BucketName)
|
||||||
).content.name
|
.contentType("image/${ft.replace(".", "")}")
|
||||||
return "https://raw.githubusercontent.com/${configManager.githubUser}/${configManager.githubImageRepo}/refs/heads/main/$response".proxy
|
.key(key)
|
||||||
|
.build()
|
||||||
|
s3Client.putObject(putObjectRequest, RequestBody.fromBytes(file))
|
||||||
|
return "${configManager.cloudflareR2PublicUrl}/$key".proxy
|
||||||
|
}
|
||||||
|
|
||||||
|
ImageBedType.QQ -> ROneBotFactory.action.uploadImage(file.encodeToBase64(), true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
* Date: 2024/9/8
|
* Date: 2024/9/8
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@file:Suppress("unused")
|
||||||
|
|
||||||
package cn.rtast.fancybot.util.str
|
package cn.rtast.fancybot.util.str
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user