From a7b569c5739650f829b6097ee006c0f2ac1018ab Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 3 Oct 2026 15:32:44 +0200 Subject: [PATCH] =?utf8?q?=F0=9F=A7=91=E2=80=8D=F0=9F=92=BB=20Include=20re?= =?utf8?q?ason=20for=20rejection=20in=20rejection=20object?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt | 8 +++++--- .../net/pterodactylus/sone/core/DefaultElementLoaderTest.kt | 5 +++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt b/src/main/kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt index 7615776..72e9c78 100644 --- a/src/main/kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt +++ b/src/main/kotlin/net/pterodactylus/sone/core/DefaultElementLoader.kt @@ -32,12 +32,12 @@ class DefaultElementLoader(private val freenetInterface: FreenetInterface, ticke override fun shouldCancel(uri: FreenetURI, mimeType: String, size: Long): Boolean { if (size > 2097152) { logger.fine { "Canceling download of $uri because it’s > 2 MiB." } - rejectedElements += uri.toString() to RejectionReason.SizeTooLarge + rejectedElements[uri.toString()] = Rejected(RejectionReason.SizeTooLarge, size) return true } if (!mimeType.startsWith("image/") && !mimeType.startsWith("text/html")) { logger.fine { "Canceling download of $uri because of its MIME type, $mimeType." } - rejectedElements += uri.toString() to RejectionReason.InvalidMediaType + rejectedElements[uri.toString()] = Rejected(RejectionReason.InvalidMediaType, mimeType) return true } return false @@ -111,7 +111,7 @@ class DefaultElementLoader(private val freenetInterface: FreenetInterface, ticke val loadedElements: Set get() = elementCache.asMap().values.toSet() - val rejectedElements: Map + val rejectedElements: Map field = mutableMapOf() val failedElements: Set @@ -124,6 +124,8 @@ class DefaultElementLoader(private val freenetInterface: FreenetInterface, ticke } + data class Rejected(val reason: RejectionReason, val data: Any) + } private fun String.decode() = try { URLDecoder.decode(this, "UTF-8")!! } catch (e: RuntimeException) { freenet.support.Logger.error(DefaultElementLoader::class.java, "Could not decode %s!".format(this), e); throw e } diff --git a/src/test/kotlin/net/pterodactylus/sone/core/DefaultElementLoaderTest.kt b/src/test/kotlin/net/pterodactylus/sone/core/DefaultElementLoaderTest.kt index eb9ee15..bc2f177 100644 --- a/src/test/kotlin/net/pterodactylus/sone/core/DefaultElementLoaderTest.kt +++ b/src/test/kotlin/net/pterodactylus/sone/core/DefaultElementLoaderTest.kt @@ -10,6 +10,7 @@ import java.util.logging.Level.ALL import java.util.logging.LogRecord import java.util.logging.Logger import kotlin.math.min +import net.pterodactylus.sone.core.DefaultElementLoader.Rejected import net.pterodactylus.sone.core.DefaultElementLoader.RejectionReason.InvalidMediaType import net.pterodactylus.sone.core.DefaultElementLoader.RejectionReason.SizeTooLarge import net.pterodactylus.sone.core.FreenetInterface.BackgroundFetchCallback @@ -263,7 +264,7 @@ class DefaultElementLoaderTest { fun `element loader exposes rejected element when media type does not match`() { runWithCallback("KSK@test") { elementLoader, _, callback, _ -> callback.shouldCancel(FreenetURI("KSK@test"), "application/x-test-data", 1234) - assertThat(elementLoader.rejectedElements, hasEntry("KSK@test", InvalidMediaType)) + assertThat(elementLoader.rejectedElements, hasEntry("KSK@test", Rejected(InvalidMediaType, "application/x-test-data"))) } } @@ -271,7 +272,7 @@ class DefaultElementLoaderTest { fun `element loader exposes rejected element when data is too large`() { runWithCallback("KSK@test") { elementLoader, _, callback, _ -> callback.shouldCancel(FreenetURI("KSK@test"), "image/png", 12345678) - assertThat(elementLoader.rejectedElements, hasEntry("KSK@test", SizeTooLarge)) + assertThat(elementLoader.rejectedElements, hasEntry("KSK@test", Rejected(SizeTooLarge, 12345678L))) } } -- 2.7.4