Implement SetTrust message.
[jFCPlib.git] / src / net / pterodactylus / fcp / plugin / WebOfTrustPlugin.java
index bb6d682..6c96f50 100644 (file)
@@ -173,6 +173,82 @@ public class WebOfTrustPlugin {
                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);
+       }
+
+       /**
+        * Returns identities by the given score.
+        *
+        * @param ownIdentity
+        *            The own identity
+        * @param context
+        *            The context to get the identities for
+        * @param positive
+        *            {@code null} to return neutrally trusted identities, {@code
+        *            true} to return positively trusted identities, {@code false}
+        *            for negatively trusted identities
+        * @return The trusted identites
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws FcpException
+        *             if an FCP error occurs
+        */
+       public Set<Identity> getIdentitesByScore(OwnIdentity ownIdentity, String context, Boolean positive) throws IOException, FcpException {
+               Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "GetIdentitesByScore", "TreeOwner", ownIdentity.getIdentifier(), "Context", context, "Selection", ((positive == null) ? "0" : (positive ? "+" : "-"))));
+               if (!replies.get("Message").equals("Identities")) {
+                       throw new FcpException("WebOfTrust Plugin did not reply with “Identities” message!");
+               }
+               Set<Identity> identities = new HashSet<Identity>();
+               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);
+                       identities.add(new Identity(identifier, nickname, requestUri));
+               }
+               return identities;
+       }
+
+       /**
+        * Sets the trust given to the given identify by the given own identity.
+        *
+        * @param ownIdentity
+        *            The identity that gives the trust
+        * @param identity
+        *            The identity that receives the trust
+        * @param trust
+        *            The trust value (ranging from {@code -100} to {@code 100}
+        * @param comment
+        *            The comment for setting the trust
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws FcpException
+        *             if an FCP error occurs
+        */
+       public void setTrust(OwnIdentity ownIdentity, Identity identity, byte trust, String comment) throws IOException, FcpException {
+               Map<String, String> replies = fcpClient.sendPluginMessage("plugins.WoT.WoT", createParameters("Message", "SetTrust", "Truster", ownIdentity.getIdentifier(), "Trustee", identity.getIdentifier(), "Value", String.valueOf(trust), "Comment", comment));
+               if (!replies.get("Message").equals("TrustSet")) {
+                       throw new FcpException("WebOfTrust Plugin did not reply with “TrustSet” message!");
+               }
+       }
+
        //
        // PRIVATE METHODS
        //
@@ -325,16 +401,7 @@ public class WebOfTrustPlugin {
         *
         * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
         */
-       public static class OwnIdentity {
-
-               /** The identity’s identifier. */
-               private final String identifier;
-
-               /** The identity’s nickname. */
-               private final String nickname;
-
-               /** The identity’s request URI. */
-               private final String requestUri;
+       public static class OwnIdentity extends Identity {
 
                /** The identity’s insert URI. */
                private final String insertUri;
@@ -352,40 +419,11 @@ public class WebOfTrustPlugin {
                 *            The insert URI of the identity
                 */
                public OwnIdentity(String identifier, String nickname, String requestUri, String insertUri) {
-                       this.identifier = identifier;
-                       this.nickname = nickname;
-                       this.requestUri = requestUri;
+                       super(identifier, nickname, requestUri);
                        this.insertUri = insertUri;
                }
 
                /**
-                * Returns the identifier of this identity.
-                *
-                * @return This identity’s identifier
-                */
-               public String getIdentifier() {
-                       return identifier;
-               }
-
-               /**
-                * Returns the nickname of this identity.
-                *
-                * @return This identity’s nickname
-                */
-               public String getNickname() {
-                       return nickname;
-               }
-
-               /**
-                * Returns the request URI of this identity.
-                *
-                * @return This identity’s request URI
-                */
-               public String getRequestUri() {
-                       return requestUri;
-               }
-
-               /**
                 * Returns the insert URI of this identity.
                 *
                 * @return This identity’s insert URI