Implement GetTrusters message.
[jFCPlib.git] / src / net / pterodactylus / fcp / plugin / WebOfTrustPlugin.java
index b0c6ea4..0650d76 100644 (file)
@@ -227,6 +227,36 @@ public class WebOfTrustPlugin {
        }
 
        /**
+        * Returns the identities that trust the given identity.
+        *
+        * @param identity
+        *            The identity to get the trusters for
+        * @param context
+        *            The context to get the trusters for
+        * @return The identities and their trust values
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws FcpException
+        *             if an FCP error occurs
+        */
+       public Map<Identity, IdentityTrust> getTrusters(Identity identity, String context) throws IOException, FcpException {
+               Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetTrusters", "Identity", identity.getIdentifier(), "Context", context));
+               if (!replies.get("Message").equals("Identities")) {
+                       throw new FcpException("WebOfTrust Plugin did not reply with “Identities” message!");
+               }
+               Map<Identity, IdentityTrust> identityTrusts = new HashMap<Identity, IdentityTrust>();
+               for (int identityIndex = 1; replies.containsKey("Identity" + identityIndex); identityIndex++) {
+                       String identifier = replies.get("Identity" + identityIndex);
+                       String nickname = replies.get("Nickname" + identityIndex);
+                       String requestUri = replies.get("RequestURI" + identityIndex);
+                       byte trust = Byte.parseByte(replies.get("Value" + identityIndex));
+                       String comment = replies.get("Comment" + identityIndex);
+                       identityTrusts.put(new Identity(identifier, nickname, requestUri), new IdentityTrust(trust, comment));
+               }
+               return identityTrusts;
+       }
+
+       /**
         * Sets the trust given to the given identify by the given own identity.
         *
         * @param ownIdentity
@@ -333,6 +363,52 @@ public class WebOfTrustPlugin {
        }
 
        /**
+        * Container for the trust given from one identity to another.
+        *
+        * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
+        */
+       public static class IdentityTrust {
+
+               /** The trust given to the identity. */
+               private final byte trust;
+
+               /** The command for the trust value. */
+               private final String comment;
+
+               /**
+                * Creates a new identity trust container.
+                *
+                * @param trust
+                *            The trust given to the identity
+                * @param comment
+                *            The comment for the trust value
+                */
+               public IdentityTrust(byte trust, String comment) {
+                       this.trust = trust;
+                       this.comment = comment;
+               }
+
+               /**
+                * Returns the trust value given to the identity.
+                *
+                * @return The trust value
+                */
+               public byte getTrust() {
+                       return trust;
+               }
+
+               /**
+                * Returns the comment for the trust value.
+                *
+                * @return The comment for the trust value
+                */
+               public String getComment() {
+                       return comment;
+               }
+
+       }
+
+       /**
         * Container that stores the trust that is calculated by taking all trustees
         * and their trust lists into account.
         *