Add method to insert a directory into Freenet.
[Sone.git] / src / main / java / net / pterodactylus / sone / core / FreenetInterface.java
index f955c4f..aa46f93 100644 (file)
@@ -17,6 +17,7 @@
 
 package net.pterodactylus.sone.core;
 
+import java.util.HashMap;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -25,6 +26,7 @@ import net.pterodactylus.util.service.AbstractService;
 import freenet.client.FetchException;
 import freenet.client.FetchResult;
 import freenet.client.HighLevelSimpleClient;
+import freenet.client.InsertException;
 import freenet.keys.FreenetURI;
 import freenet.node.Node;
 
@@ -39,6 +41,7 @@ public class FreenetInterface extends AbstractService {
        private static final Logger logger = Logging.getLogger(FreenetInterface.class);
 
        /** The node to interact with. */
+       @SuppressWarnings("unused")
        private final Node node;
 
        /** The high-level client to use for requests. */
@@ -87,8 +90,29 @@ public class FreenetInterface extends AbstractService {
         * @return The request key at index 0, the insert key at index 1
         */
        public String[] generateKeyPair() {
-               FreenetURI[] keyPair = client.generateKeyPair("/");
+               FreenetURI[] keyPair = client.generateKeyPair("");
                return new String[] { keyPair[1].toString(), keyPair[0].toString() };
        }
 
+       /**
+        * Inserts a directory into Freenet.
+        *
+        * @param insertUri
+        *            The insert URI
+        * @param manifestEntries
+        *            The directory entries
+        * @param defaultFile
+        *            The name of the default file
+        * @return The generated URI
+        * @throws SoneException
+        *             if an insert error occurs
+        */
+       public FreenetURI insertDirectory(FreenetURI insertUri, HashMap<String, Object> manifestEntries, String defaultFile) throws SoneException {
+               try {
+                       return client.insertManifest(insertUri, manifestEntries, defaultFile);
+               } catch (InsertException ie1) {
+                       throw new SoneException(null, ie1);
+               }
+       }
+
 }