import net.pterodactylus.sone.text.LinkType.USK
import org.bitpedia.util.Base32
import java.net.MalformedURLException
+import javax.inject.*
/**
* [Parser] implementation that can recognize Freenet URIs.
*/
-class SoneTextParser(private val soneProvider: SoneProvider?, private val postProvider: PostProvider?) {
+class SoneTextParser @Inject constructor(private val soneProvider: SoneProvider?, private val postProvider: PostProvider?) {
fun parse(source: String, context: SoneTextParserContext?) =
source.split("\n")
SSK, USK ->
try {
FreenetURI(link).let { uri ->
- uri.docName ?: "${uri.keyType}@${uri.routingKey.freenetBase64}"
- }.let { FreenetLinkPart(link, it, trusted = context?.routingKey?.contentEquals(FreenetURI(link).routingKey) == true) }
+ uri.allMetaStrings
+ ?.takeIf { (it.size > 1) || ((it.size == 1) && (it.single() != ""))}
+ ?.lastOrNull()
+ ?: uri.docName
+ ?: "${uri.keyType}@${uri.routingKey.freenetBase64}"
+ }.let { FreenetLinkPart(link.removeSuffix("/"), it, trusted = context?.routingKey?.contentEquals(FreenetURI(link).routingKey) == true) }
} catch (e: MalformedURLException) {
PlainTextPart(link)
}