import com.google.inject.*
import freenet.support.*
-import freenet.support.api.*
import net.pterodactylus.sone.freenet.*
import net.pterodactylus.sone.freenet.plugin.*
import net.pterodactylus.sone.utils.NumberParsers.*
val insertUri = fields.get("InsertURI$ownIdentityCounter")
val nickname = fields.get("Nickname$ownIdentityCounter")
val ownIdentity = DefaultOwnIdentity(id, nickname, requestUri, insertUri)
- ownIdentity.setContexts(parseContexts("Contexts$ownIdentityCounter.", fields))
- ownIdentity.properties = parseProperties("Properties$ownIdentityCounter.", fields)
+ ownIdentity.contexts = fields.contexts("Contexts$ownIdentityCounter.")
+ ownIdentity.properties = fields.properties("Properties$ownIdentityCounter.")
ownIdentities.add(ownIdentity)
}
return ownIdentities
val nickname = fields.get("Nickname$identityCounter")
val requestUri = fields.get("RequestURI$identityCounter")
val identity = DefaultIdentity(id, nickname, requestUri)
- identity.setContexts(parseContexts("Contexts$identityCounter.", fields))
- identity.properties = parseProperties("Properties$identityCounter.", fields)
+ identity.contexts = fields.contexts("Contexts$identityCounter.")
+ identity.properties = fields.properties("Properties$identityCounter.")
val trust = parseInt(fields.get("Trust$identityCounter"), null)
val score = parseInt(fields.get("Score$identityCounter"), 0)!!
val rank = parseInt(fields.get("Rank$identityCounter"), 0)!!
performRequest(SimpleFieldSetBuilder().put("Message", "Ping").get())
}
- private fun performRequest(fields: SimpleFieldSet, data: Bucket? = null): PluginReply {
+ private fun performRequest(fields: SimpleFieldSet): PluginReply {
logger.log(Level.FINE, format("Sending FCP Request: %s", fields.get("Message")))
- val pluginReply = pluginConnector.sendRequest(WOT_PLUGIN_NAME, "", fields, data)
+ val pluginReply = pluginConnector.sendRequest(WOT_PLUGIN_NAME, "", fields)
logger.log(Level.FINEST, format("Received FCP Response for %s: %s", fields.get("Message"), pluginReply.fields.get("Message")))
if ("Error" == pluginReply.fields.get("Message")) {
throw PluginException("Could not perform request for " + fields.get("Message"))
private const val WOT_PLUGIN_NAME = "plugins.WebOfTrust.WebOfTrust"
-private fun parseContexts(prefix: String, fields: SimpleFieldSet): Set<String> {
- val contexts = HashSet<String>()
- var contextCounter = -1
- while (true) {
- val context = fields.get(prefix + "Context" + ++contextCounter) ?: break
- contexts.add(context)
- }
- return contexts
-}
-
-private fun parseProperties(prefix: String, fields: SimpleFieldSet): Map<String, String> {
- val properties = HashMap<String, String>()
- var propertiesCounter = -1
- while (true) {
- val propertyName = fields.get(prefix + "Property" + ++propertiesCounter + ".Name") ?: break
- val propertyValue = fields.get(prefix + "Property" + propertiesCounter + ".Value")
- properties[propertyName] = propertyValue
- }
- return properties
-}
+private fun SimpleFieldSet.contexts(prefix: String) =
+ generateSequence(0, Int::inc)
+ .map { get("${prefix}Context$it") }
+ .takeWhile { it != null }
+ .toSet()
+
+private fun SimpleFieldSet.properties(prefix: String) =
+ generateSequence(0, Int::inc)
+ .takeWhile { get("${prefix}Property${it}.Name") != null }
+ .map { get("${prefix}Property${it}.Name") to get("${prefix}Property${it}.Value") }
+ .toMap()