🔀 Merge branch 'release/v82'
[Sone.git] / src / main / kotlin / net / pterodactylus / sone / core / SoneUriCreator.kt
1 package net.pterodactylus.sone.core
2
3 import freenet.keys.FreenetURI
4 import net.pterodactylus.sone.data.Sone
5 import net.pterodactylus.sone.freenet.wot.OwnIdentity
6
7 /**
8  * Injectable helper class that can create request and insert URIs for [Sones][Sone].
9  */
10 open class SoneUriCreator {
11
12         fun getRequestUri(sone: Sone): FreenetURI = sone.identity.requestUri
13                         .let(::FreenetURI)
14                         .sonify(sone.latestEdition)
15
16         open fun getInsertUri(sone: Sone): FreenetURI? = (sone.identity as? OwnIdentity)?.insertUri
17                         ?.let(::FreenetURI)
18                         ?.sonify(sone.latestEdition)
19
20 }
21
22 private fun FreenetURI.sonify(edition: Long): FreenetURI =
23                 setKeyType("USK")
24                                 .setDocName("Sone")
25                                 .setMetaString(emptyArray())
26                                 .setSuggestedEdition(edition)