From d14de44f918df0667e52d3833ed34e9281a5f4a0 Mon Sep 17 00:00:00 2001 From: cssxsh Date: Sat, 28 May 2022 21:18:14 +0800 Subject: [PATCH] fix: image download --- .../kotlin/io/github/gnuf0rce/mirai/rss/RssContent.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/io/github/gnuf0rce/mirai/rss/RssContent.kt b/src/main/kotlin/io/github/gnuf0rce/mirai/rss/RssContent.kt index 6602f3c..8027b8c 100644 --- a/src/main/kotlin/io/github/gnuf0rce/mirai/rss/RssContent.kt +++ b/src/main/kotlin/io/github/gnuf0rce/mirai/rss/RssContent.kt @@ -68,9 +68,9 @@ internal val client: RssHttpClient by lazy { } } -private val Url.filename get() = encodedPath.substringAfterLast('/').decodeURLPart() +internal val Url.filename get() = encodedPath.substringAfterLast('/').decodeURLPart() -private fun HttpMessage.contentDisposition(): ContentDisposition? { +internal fun HttpMessage.contentDisposition(): ContentDisposition? { return ContentDisposition.parse(headers[HttpHeaders.ContentDisposition] ?: return null) } @@ -167,12 +167,14 @@ internal suspend fun Element.image(subject: Contact): MessageContent { client.useHttpClient { http -> http.get(url).execute { response -> val relative = response.contentDisposition()?.parameter(ContentDisposition.Parameters.FileName) + ?: response.etag()?.removeSurrounding("\"") + ?.plus(".")?.plus(response.contentType()?.contentSubtype) ?: response.request.url.filename val file = ImageFolder.resolve(relative) if (file.exists().not()) { - file.mkdirs() + file.parentFile.mkdirs() file.outputStream().use { output -> val channel: ByteReadChannel = response.receive()