X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneUriCreator.kt;fp=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneUriCreator.kt;h=183303a0227ba0c3b9a82568a09455d81583d296;hp=0000000000000000000000000000000000000000;hb=5c5bee980f9cab5792e34d1c9840f73b8b191830;hpb=faf66247a34f64946990a985d2ea3003465969cb diff --git a/src/main/kotlin/net/pterodactylus/sone/core/SoneUriCreator.kt b/src/main/kotlin/net/pterodactylus/sone/core/SoneUriCreator.kt new file mode 100644 index 0000000..183303a --- /dev/null +++ b/src/main/kotlin/net/pterodactylus/sone/core/SoneUriCreator.kt @@ -0,0 +1,26 @@ +package net.pterodactylus.sone.core + +import freenet.keys.FreenetURI +import net.pterodactylus.sone.data.Sone +import net.pterodactylus.sone.freenet.wot.OwnIdentity + +/** + * Injectable helper class that can create request and insert URIs for [Sones][Sone]. + */ +open class SoneUriCreator { + + fun getRequestUri(sone: Sone): FreenetURI = sone.identity.requestUri + .let(::FreenetURI) + .sonify(sone.latestEdition) + + open fun getInsertUri(sone: Sone): FreenetURI? = (sone.identity as? OwnIdentity)?.insertUri + ?.let(::FreenetURI) + ?.sonify(sone.latestEdition) + +} + +private fun FreenetURI.sonify(edition: Long): FreenetURI = + setKeyType("USK") + .setDocName("Sone") + .setMetaString(emptyArray()) + .setSuggestedEdition(edition)