X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Fwot%2FPluginWebOfTrustConnector.kt;h=d829734f36df5e5b349bed31b192501a06cf9a96;hb=5c5bee980f9cab5792e34d1c9840f73b8b191830;hp=e30cbb3990f98961087ae86b01c18dd240e9717c;hpb=11b8f3ca12f8b913a4aaca3346e072dd148608ce;p=Sone.git diff --git a/src/main/kotlin/net/pterodactylus/sone/freenet/wot/PluginWebOfTrustConnector.kt b/src/main/kotlin/net/pterodactylus/sone/freenet/wot/PluginWebOfTrustConnector.kt index e30cbb3..d829734 100644 --- a/src/main/kotlin/net/pterodactylus/sone/freenet/wot/PluginWebOfTrustConnector.kt +++ b/src/main/kotlin/net/pterodactylus/sone/freenet/wot/PluginWebOfTrustConnector.kt @@ -1,5 +1,5 @@ /* - * Sone - WebOfTrustConnector.java - Copyright © 2010–2019 David Roden + * Sone - PluginWebOfTrustConnector.kt - Copyright © 2010–2020 David Roden * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,14 +17,17 @@ package net.pterodactylus.sone.freenet.wot -import com.google.inject.* -import freenet.support.* -import net.pterodactylus.sone.freenet.* -import net.pterodactylus.sone.freenet.plugin.* -import java.lang.String.* -import java.util.logging.* +import com.google.inject.Inject +import freenet.support.SimpleFieldSet +import kotlinx.coroutines.runBlocking +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder +import net.pterodactylus.sone.freenet.plugin.PluginConnector +import net.pterodactylus.sone.freenet.plugin.PluginException +import net.pterodactylus.sone.freenet.plugin.PluginReply +import java.lang.String.format +import java.util.logging.Level import java.util.logging.Logger -import java.util.logging.Logger.* +import java.util.logging.Logger.getLogger /** * Connector for the Web of Trust plugin. @@ -45,6 +48,14 @@ class PluginWebOfTrustConnector @Inject constructor(private val pluginConnector: .fields .parseIdentities { parseTrustedIdentity(it, ownIdentity) } + override fun loadAllIdentities(ownIdentity: OwnIdentity, context: String?): Set = + performRequest(SimpleFieldSetBuilder().put("Message", "GetIdentitiesByScore").put("Truster", ownIdentity.id).put("Selection", "+").put("Context", context ?: "").put("WantTrustValues", "true").get()) + .fields + .parseIdentities { parseTrustedIdentity(it, ownIdentity) } + + performRequest(SimpleFieldSetBuilder().put("Message", "GetIdentitiesByScore").put("Truster", ownIdentity.id).put("Selection", "-").put("Context", context ?: "").put("WantTrustValues", "true").get()) + .fields + .parseIdentities { parseTrustedIdentity(it, ownIdentity) } + @Throws(PluginException::class) override fun addContext(ownIdentity: OwnIdentity, context: String) { performRequest(SimpleFieldSetBuilder().put("Message", "AddContext").put("Identity", ownIdentity.id).put("Context", context).get()) @@ -63,29 +74,18 @@ class PluginWebOfTrustConnector @Inject constructor(private val pluginConnector: performRequest(SimpleFieldSetBuilder().put("Message", "RemoveProperty").put("Identity", ownIdentity.id).put("Property", name).get()) } - override fun getTrust(ownIdentity: OwnIdentity, identity: Identity) = - performRequest(SimpleFieldSetBuilder().put("Message", "GetIdentity").put("Truster", ownIdentity.id).put("Identity", identity.id).get()) - .fields - .parseTrust() - - override fun setTrust(ownIdentity: OwnIdentity, identity: Identity, trust: Int, comment: String) { - performRequest(SimpleFieldSetBuilder().put("Message", "SetTrust").put("Truster", ownIdentity.id).put("Trustee", identity.id).put("Value", trust.toString()).put("Comment", comment).get()) - } - - override fun removeTrust(ownIdentity: OwnIdentity, identity: Identity) { - performRequest(SimpleFieldSetBuilder().put("Message", "RemoveTrust").put("Truster", ownIdentity.id).put("Trustee", identity.id).get()) - } - override fun ping() { performRequest(SimpleFieldSetBuilder().put("Message", "Ping").get()) } private fun performRequest(fields: SimpleFieldSet): PluginReply { logger.log(Level.FINE, format("Sending FCP Request: %s", fields.get("Message"))) - return pluginConnector.sendRequest(WOT_PLUGIN_NAME, "", fields).also { - logger.log(Level.FINEST, format("Received FCP Response for %s: %s", fields.get("Message"), it.fields.get("Message"))) - if ("Error" == it.fields.get("Message")) { - throw PluginException("Could not perform request for " + fields.get("Message")) + return runBlocking { + pluginConnector.sendRequest(WOT_PLUGIN_NAME, fields).also { + logger.log(Level.FINEST, format("Received FCP Response for %s: %s", fields.get("Message"), it.fields.get("Message"))) + if ("Error" == it.fields.get("Message")) { + throw PluginException("Could not perform request for " + fields.get("Message")) + } } } }