package freenet.clients.http;
import java.io.IOException;
import java.net.URI;
import freenet.client.HighLevelSimpleClient;
import freenet.node.NodeClientCore;
import freenet.support.HTMLNode;
import freenet.support.api.HTTPRequest;
/**
* Decode URL Toadlet. Accessible from <code>http://.../decode/</code>.
*
* Allow for Firefox about:config option keyword.URL to work properly.
*/
public class DecodeToadlet extends Toadlet {
DecodeToadlet(HighLevelSimpleClient client, NodeClientCore c) {
super(client);
this.core=c;
}
final NodeClientCore core;
public void handleMethodGET(URI uri, HTTPRequest request, ToadletContext ctx) throws ToadletContextClosedException, IOException {
PageNode page = ctx.getPageMaker().getPageNode("Redirect to Decoded link", ctx);
HTMLNode pageNode = page.outer;
HTMLNode contentNode = page.content;
if(ctx.isAllowedFullAccess())
contentNode.addChild(ctx.getAlertManager().createSummary());
final String requestPath = request.getPath().substring(path().length());
//Without this it'll try to look in the current directory which will be /decode and won't work.
String keyToFetch = "/" + requestPath;
// This is for when a browser can't handle 301s, should very rarely (never?) be seen.
ctx.getPageMaker().getInfobox("infobox-warning", "Decode Link", contentNode, "decode-not-redirected", true).
addChild("a", "href", keyToFetch, "Click Here to be re-directed");
this.writeHTMLReply(ctx, 301, "Moved Permanently\nLocation: "+ keyToFetch, pageNode.generate());
}
@Override
public String path() {
return "/decode/";
}
}