Implement GetIdentity message.
[jFCPlib.git] / src / net / pterodactylus / fcp / plugin / WebOfTrustPlugin.java
index ba9ad3a..df6991e 100644 (file)
@@ -133,6 +133,48 @@ public class WebOfTrustPlugin {
                return ownIdentities;
        }
 
+       /**
+        * Returns the identity with the given identifier and the trust values
+        * depending on the given own identity.
+        *
+        * @param ownIdentity
+        *            The own identity that is used to calculate trust values
+        * @param identifier
+        *            The identifier of the identity to get
+        * @return The request identity
+        * @throws IOException
+        *             if an I/O error occurs
+        * @throws FcpException
+        *             if an FCP error occurs
+        */
+       public Identity getIdentity(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!");
+               }
+               String nickname = replies.get("Nickname");
+               String requestUri = replies.get("RequestURI");
+               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 Identity(identifier, nickname, requestUri, trust, score, rank);
+       }
+
        //
        // PRIVATE METHODS
        //
@@ -269,7 +311,16 @@ public class WebOfTrustPlugin {
         *
         * @author David ‘Bombe’ Roden &lt;bombe@freenetproject.org&gt;
         */
-       public static class OwnIdentity extends Identity {
+       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;
 
                /** The identity’s insert URI. */
                private final String insertUri;
@@ -287,11 +338,40 @@ public class WebOfTrustPlugin {
                 *            The insert URI of the identity
                 */
                public OwnIdentity(String identifier, String nickname, String requestUri, String insertUri) {
-                       super(identifier, nickname, requestUri);
+                       this.identifier = identifier;
+                       this.nickname = nickname;
+                       this.requestUri = 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