Author: nextgens
Date: 2006-05-11 12:37:07 +0000 (Thu, 11 May 2006)
New Revision: 8653
Modified:
trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
Log:
Basic NIM support for .7 : parameters are :
action = /
insert <= != null
key
content-type
data
return <= the return url
Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-05-11
04:24:24 UTC (rev 8652)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java 2006-05-11
12:37:07 UTC (rev 8653)
@@ -6,12 +6,17 @@
import java.net.URISyntaxException;
import java.util.Enumeration;
+import freenet.client.ClientMetadata;
import freenet.client.HighLevelSimpleClient;
+import freenet.client.InsertBlock;
+import freenet.client.InserterException;
import freenet.config.SubConfig;
+import freenet.keys.FreenetURI;
import freenet.node.Node;
import freenet.node.UserAlert;
import freenet.node.Version;
import freenet.pluginmanager.HTTPRequest;
+import freenet.support.ArrayBucket;
import freenet.support.Bucket;
import freenet.support.BucketTools;
import freenet.support.HTMLEncoder;
@@ -160,6 +165,49 @@
writeReply(ctx, 200, "text/html", "OK",
buf.toString());
}
}
+ }else if(request.isParameterSet("insert")){
+ FreenetURI key = new
FreenetURI(request.getParam("key"));
+ ClientMetadata contentType = new
ClientMetadata(request.getParam("content-type"));
+ String value = request.getParam("data");
+ String callback = request.getParam("return");
+
+ if(key.toString().length()>0 && value.length()>0){
+ InsertBlock block = new InsertBlock(new
ArrayBucket(value), contentType, key);
+ try {
+ key = this.insert(block, false);
+
+ // We redirect to the index if not specified
+ if (callback==null) callback = "/";
+ writePermanentRedirect(ctx,"Next",callback);
+ } catch (InserterException e) {
+ ctx.getPageMaker().makeHead(buf, "ERROR");
+ buf.append("<div class=\"infobox\">\n");
+ buf.append("Error: "+e.getMessage()+"<br>");
+ if(e.uri != null)
+ buf.append("URI would have been:
"+e.uri+"<br>");
+ int mode = e.getMode();
+ if(mode == InserterException.FATAL_ERRORS_IN_BLOCKS ||
mode == InserterException.TOO_MANY_RETRIES_IN_BLOCKS) {
+ buf.append("Splitfile-specific
error:\n"+e.errorCodes.toVerboseString()+"<br>");
+ }
+ buf.append("<br><a href=\"javascript:back()\"
title=\"Back\">Back</a>\n");
+ buf.append("<br><a href=\"/\" title=\"Node
Homepage\">Homepage</a>\n");
+ buf.append("</div>\n");
+
+ ctx.getPageMaker().makeTail(buf);
+ writeReply(ctx, 200, "text/html", "OK",
buf.toString());
+ }
+ }else{
+ ctx.getPageMaker().makeHead(buf, "ERROR");
+ buf.append("<div class=\"infobox\">\n");
+ buf.append("Your post form is missing a
mandatory parameter!<br />\n");
+ buf.append("<a href=\"javascript:back()\"
title=\"Back\">Back</a>\n");
+ buf.append("<a href=\"/\" title=\"Node
Homepage\">Homepage</a>\n");
+ buf.append("</div>\n");
+
+ ctx.getPageMaker().makeTail(buf);
+ writeReply(ctx, 200, "text/html", "OK",
buf.toString());
+ }
+
}else {
this.handleGet(uri, ctx);
}