Store size properties in linked element
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / core / DefaultElementLoader.kt
index 5758c47..67d5538 100644 (file)
@@ -33,11 +33,20 @@ class DefaultElementLoader(private val freenetInterface: FreenetInterface, ticke
                        ByteArrayInputStream(data).use {
                                ImageIO.read(it)
                        }?.let {
-                               imageCache.get(uri.toString().decode().normalize()) { LinkedElement(uri.toString()) }
+                               imageCache.get(uri.toString().decode().normalize()) {
+                                       LinkedElement(uri.toString(), properties = mapOf("size" to data.size, "sizeHuman" to data.size.human))
+                               }
                        }
                        removeLoadingLink(uri)
                }
 
+               private val Int.human get() = when (this) {
+                       in 0..1023 -> "$this B"
+                       in 1024..1048575 -> "${this / 1024} KiB"
+                       in 1048576..1073741823 -> "${this / 1048576} MiB"
+                       else -> "${this / 1073741824} GiB"
+               }
+
                override fun failed(uri: FreenetURI) {
                        failureCache.put(uri.toString().decode().normalize(), true)
                        removeLoadingLink(uri)