Implement AddIdentity message.
[jFCPlib.git] / src / net / pterodactylus / fcp / plugin / WebOfTrustPlugin.java
index a2b2761..d5cedfc 100644 (file)
@@ -133,6 +133,67 @@ public class WebOfTrustPlugin {
                return ownIdentities;
        }
 
+       /**
+        * Returns the trust given to the identity with the given identifier by the
+        * given own identity.
+        *
+        * @param ownIdentity
+        *            The own identity that is used to calculate trust values
+        * @param identifier
+        *            The identifier of the identity whose trust to get
+        * @return The request identity trust
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws FcpException
+        *             if an FCP error occurs
+        */
+       public IdentityTrust getIdentityTrust(OwnIdentity ownIdentity, String identifier) throws IOException, FcpException {
+               Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetIdentity", "TreeOwner", ownIdentity.getIdentifier(), "Identity", identifier));
+               if (!replies.get("Message").equals("Identity")) {
+                       throw new FcpException("WebOfTrust Plugin did not reply with “Identity” message!");
+               }
+               Byte trust = null;
+               try {
+                       trust = Byte.valueOf(replies.get("Trust"));
+               } catch (NumberFormatException nfe1) {
+                       /* ignore. */
+               }
+               Integer score = null;
+               try {
+                       score = Integer.valueOf(replies.get("Score"));
+               } catch (NumberFormatException nfe1) {
+                       /* ignore. */
+               }
+               Integer rank = null;
+               try {
+                       rank = Integer.valueOf(replies.get("Rank"));
+               } catch (NumberFormatException nfe1) {
+                       /* ignore. */
+               }
+               return new IdentityTrust(trust, score, rank);
+       }
+
+       /**
+        * Adds a new identity by its request URI.
+        *
+        * @param requestUri
+        *            The request URI of the identity to add
+        * @return The added identity
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws FcpException
+        *             if an FCP error occurs
+        */
+       public Identity addIdentity(String requestUri) throws IOException, FcpException {
+               Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "AddIdentity", "RequestURI", requestUri));
+               if (!replies.get("Message").equals("IdentityAdded")) {
+                       throw new FcpException("WebOfTrust Plugin did not reply with “IdentityAdded” message!");
+               }
+               String identifier = replies.get("ID");
+               String nickname = replies.get("Nickname");
+               return new Identity(identifier, nickname, requestUri);
+       }
+
        //
        // PRIVATE METHODS
        //
@@ -217,6 +278,70 @@ public class WebOfTrustPlugin {
        }
 
        /**
+        * Container that stores the trust given to an identity.
+        *
+        * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
+        */
+       public static class IdentityTrust {
+
+               /** The identity’s trust value. */
+               private final Byte trust;
+
+               /** The identity’s score value. */
+               private final Integer score;
+
+               /** The identity’s rank. */
+               private final Integer rank;
+
+               /**
+                * Creates a new identity trust container.
+                *
+                * @param trust
+                *            The trust value of the identity
+                * @param score
+                *            The score value of the identity
+                * @param rank
+                *            The rank of the identity
+                */
+               public IdentityTrust(Byte trust, Integer score, Integer rank) {
+                       this.trust = trust;
+                       this.score = score;
+                       this.rank = rank;
+               }
+
+               /**
+                * Returns the trust value of this identity.
+                *
+                * @return This identity’s trust value, or {@code null} if this
+                *         identity’s trust value is not known
+                */
+               public Byte getTrust() {
+                       return trust;
+               }
+
+               /**
+                * Returns the score value of this identity.
+                *
+                * @return This identity’s score value, or {@code null} if this
+                *         identity’s score value is not known
+                */
+               public Integer getScore() {
+                       return score;
+               }
+
+               /**
+                * Returns the rank of this identity.
+                *
+                * @return This identity’s rank, or {@code null} if this identity’s rank
+                *         is not known
+                */
+               public Integer getRank() {
+                       return rank;
+               }
+
+       }
+
+       /**
         * Wrapper around a web-of-trust own identity.
         *
         * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;