Author: toad
Date: 2009-01-07 19:32:05 +0000 (Wed, 07 Jan 2009)
New Revision: 24964

Modified:
   trunk/plugins/XMLLibrarian/XMLLibrarian.java
Log:
XMLLibrarian edition 19: Support both POST and GET forms.


Modified: trunk/plugins/XMLLibrarian/XMLLibrarian.java
===================================================================
--- trunk/plugins/XMLLibrarian/XMLLibrarian.java        2009-01-07 18:17:32 UTC 
(rev 24963)
+++ trunk/plugins/XMLLibrarian/XMLLibrarian.java        2009-01-07 19:32:05 UTC 
(rev 24964)
@@ -8,6 +8,8 @@
 import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.HashMap;
@@ -34,6 +36,7 @@
 import freenet.client.FetchException;
 import freenet.client.FetchResult;
 import freenet.client.HighLevelSimpleClient;
+import freenet.clients.http.HTTPRequestImpl;
 import freenet.clients.http.filter.CommentException;
 import freenet.clients.http.filter.FilterCallback;
 import freenet.keys.FreenetURI;
@@ -74,7 +77,7 @@
         * Current configuration gets saved by default in the configfile.
         * To Save the current configuration use "Save Configuration"
         */
-       private int version = 18;
+       private int version = 19;
        private final String plugName = "XMLLibrarian " + version;
 
        public String getVersion() {
@@ -96,8 +99,26 @@
        public void terminate() {
        
        }
-       public String handleHTTPPost(HTTPRequest request) throws 
PluginHTTPException {
-               return null;
+       public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException {
+               if(test) {reloadOld(configfile); test= false;}
+
+               String search = request.getParam("search");
+               String stylesheet = request.getParam("stylesheet");
+               String choice = request.getParam("choice");
+               String indexuri = request.isParameterSet("index") ? 
request.getParam("index") : DEFAULT_INDEX_SITE;
+               String find = request.getParam("find");
+               String folder = request.getParam("folderList");
+               String newFolder = request.getParam("newFolder");
+               String addNew = (request.getParam("addNew"));
+               String help = (request.getParam("help"));
+               String delete = (request.getParam("delete"));
+               String list = (request.getParam("List"));
+               String addToFolder = (request.getParam("addToFolder"));
+               String go = (request.getParam("go"));
+               String actionList = request.getParam("actionList");
+               String file = request.getParam("datafile");
+               
+               return handleInner(request.getPath(), search, stylesheet, 
choice, indexuri, find, folder, newFolder, addNew, help, delete, list, 
addToFolder, go, actionList, file);
        }
 
        private void appendDefaultPageStart(StringBuilder out, String 
stylesheet) {
@@ -127,13 +148,14 @@
                search = HTMLEncoder.encode(search);
                index = HTMLEncoder.encode(index);
                String s = "<div style=\"visibility:hidden;\"><input 
type=submit name = \"find\" value=\"Find!\" TABINDEX=1/></div>";
-               out.append("<form method=\"GET\">");
+               out.append("<form method=\"POST\">");
                out.append(s);
                out.append("<table><tr><td><input type=submit 
name=\"addToFolder\" value=\"Add to folder\" tabindex=9 /></td><td>");
                out.append("<input type=submit name=\"newFolder\" value=\"New 
Folder\" tabindex=8/></td>");
                out.append("<td><input type=submit name=\"List\" value=\"List\" 
tabindex=7/></td>");
                out.append("<td><input type=submit name=\"help\" 
value=\"Help!\" tabindex=6/></td>");
                out.append("<td><input type=submit name=\"delete\" 
value=\"Delete Folder\" tabindex=5/></td>");
+               out.append("<input type=hidden name=formPassword 
value=\""+pr.getNode().clientCore.formPassword+"\">");
                out.append("</tr></table>");
                out.append("Search for:<br/>");
                out.append("<p><input type=\"text\" 
value=\"").append(search).append("\" name=\"search\" size=80/>");
@@ -160,6 +182,7 @@
                out.append("<option value=\"Load Configuration\">Load 
Configuration</option>");
                out.append("<option value=\"Save Configuration\">Save 
Configuration</option></select>");
                out.append("<input type=submit name=\"go\" value=\"Go!\" />");
+               out.append("</form>");
        //      out.append("SetDefaultButton(this.Page, \"search\",\"find\") ");
                // index - key to index
                // search - text to search for
@@ -171,17 +194,33 @@
         * 
         * @param request
         */
-       public String handleHTTPGet(HTTPRequest request) throws 
PluginHTTPException {
+       public String handleHTTPPost(HTTPRequest request) throws 
PluginHTTPException {
 
                if(test) {reloadOld(configfile); test= false;}
 
+               String search = request.getPartAsString("search", 80);
+               String stylesheet = request.getPartAsString("stylesheet", 200);
+               String choice = request.getPartAsString("choice", 80);
+               String indexuri = request.isPartSet("index") ? 
request.getPartAsString("index", 200) : DEFAULT_INDEX_SITE;
+               String find = request.getPartAsString("find",80);
+               String folder = request.getPartAsString("folderList", 100);
+               String newFolder = request.getPartAsString("newFolder",80);
+               String addNew = (request.getPartAsString("addNew",80));
+               String help = (request.getPartAsString("help",80));
+               String delete = (request.getPartAsString("delete",80));
+               String list = (request.getPartAsString("List",80));
+               String addToFolder = 
(request.getPartAsString("addToFolder",80));
+               String go = (request.getPartAsString("go",80));
+               String actionList = request.getPartAsString("actionList",80);
+               String file = request.getPartAsString("datafile",80);
+               
+               return handleInner(request.getPath(), search, stylesheet, 
choice, indexuri, find, folder, newFolder, addNew, help, delete, list, 
addToFolder, go, actionList, file);
+       }
+       
+       private String handleInner(String path, String search, String 
stylesheet, String choice, String indexuri, String find, String folder, String 
newFolder, String addNew, String help, String delete, String list, String 
addToFolder, String go, String actionList, String file) {
                StringBuilder out = new StringBuilder();
-               String search = request.getParam("search");
-               String stylesheet = request.getParam("stylesheet", null);
-               String choice = request.getParam("choice");
-
-               if(stylesheet != null) {
-                       FilterCallback cb = 
pr.makeFilterCallback(request.getPath());
+               if(stylesheet != null && !(stylesheet.length() == 0)) {
+                       FilterCallback cb = pr.makeFilterCallback(path);
                        try {
                                stylesheet = cb.processURI(stylesheet, 
"text/css");
                        } catch (CommentException e) {
@@ -189,7 +228,6 @@
                        }
                }
 
-               String indexuri = request.getParam("index", DEFAULT_INDEX_SITE);
                if (!indexuri.endsWith("/")) indexuri += "/";
 
                String indexSite = HTMLEncoder.encode(indexuri);
@@ -197,15 +235,14 @@
                appendDefaultPostFields(out, search, indexuri);
                appendDefaultPageEnd(out);
                
-               if(((request.getParam("find")).equals("Find!")) && 
!choice.equals("folder") && !choice.equals("index"))
+               if(((find.equals("Find!")) && !choice.equals("folder") && 
!choice.equals("index")))
                        out.append(HTMLEncoder.encode("Choose an index or a 
folder for search\n"));
                /*
                 * search for the given string in the chosen folder 
                 */
                if(choice.equals("folder")){
-                       if((request.getParam("find")).equals("Find!"))
+                       if((find.equals("Find!")))
                        {
-                               String folder = request.getParam("folderList");
                                try{
                                        String[] indices = 
indexList.get(folder);
                                        
@@ -236,14 +273,14 @@
                /*
                 * create a new folder
                 */
-               else if((request.getParam("newFolder")).equals("New Folder")){
+               else if((newFolder).equals("New Folder")){
                        out.append("<p>Name of the new Folder<br/>");
                        out.append("<form><input type=\"text\" 
name=\"newfolder\" size=20/> ");
+                       out.append("<input type=hidden name=formPassword 
value=\""+pr.getNode().clientCore.formPassword+"\">");
                        out.append("<input type=submit value=\"Add\" 
name=\"addNew\" />");
                }        
-               else if((request.getParam("addNew")).equals("Add")){
+               else if(addNew.equals("Add")){
                        try{
-                               String newFolder = 
request.getParam("newfolder");
                                synchronized(this){
                                if(newFolder.equals("")) out.append("Invalid 
folder name \n");
                                else {
@@ -259,7 +296,7 @@
                /*
                 * list the usage of various buttons
                 */
-               else if((request.getParam("help")).equals("Help!")){
+               else if(help.equals("Help!")){
                        out.append("<h3>Find</h3>");
                        out.append("<p>Search for the queried word in either an 
index site or a selected folder of indices <br/>");
                        out.append("If searching in a folder of indices, select 
the appropriate folder and check the button for folder<br/>");
@@ -273,8 +310,7 @@
                /*
                 * delete the chosen folder
                 */
-               else if((request.getParam("delete")).equals("Delete Folder")){
-                       String folder = request.getParam("folderList");
+               else if(delete.equals("Delete Folder")){
                        synchronized(this){
                        if(folder.equals("")) out.append("Choose an existing 
folder for deletion");
                        else{
@@ -285,9 +321,7 @@
                /*
                 * add the current index to the current folder
                 */
-               else if((request.getParam("addToFolder")).equals("Add to 
folder")){
-                       String folder = request.getParam("folderList");
-                       indexuri = request.getParam("index",DEFAULT_INDEX_SITE);
+               else if(addToFolder.equals("Add to folder")){
                        if(folder.equals("") || 
indexuri.equals(""))out.append("Index \""+HTMLEncoder.encode(indexuri)+"\" 
could not be added to folder \""+HTMLEncoder.encode(folder)+"\"");
                        else{
                                indexSite = indexuri;
@@ -318,9 +352,8 @@
                /*
                 * list the indices added to the current folder
                 */
-               else if((request.getParam("List")).equals("List")){
+               else if(list.equals("List")){
 
-                       String folder = request.getParam("folderList");
                        try{
                                String[] indices = indexList.get(folder);
                                for(int i = 0;i<indices.length;i++){
@@ -345,13 +378,11 @@
                        }
                }
                
-               else if((request.getParam("go")).equals("Go!")){
+               else if(go.equals("Go!")){
                        /*
                         * import the list of indices from a file on disk to 
the current folder
                         */
-                       if((request.getParam("actionList")).equals("Import From 
File")){
-                               String folder = request.getParam("folderList");
-                               String file = request.getParam("datafile");
+                       if((actionList.equals("Import From File"))){
                                Vector<String> indices=new Vector<String>();
                                try{
                                        BufferedReader inp = new 
BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
@@ -394,10 +425,8 @@
                        /*
                         * export the current list of indices from the current 
folder to the specified file
                         */
-                       else if((request.getParam("actionList")).equals("Export 
To File")){
+                       else if((actionList.equals("Export To File"))){
 
-                               String folder = request.getParam("folderList");
-                               String file = request.getParam("datafile");
                                try{
                                        FileWriter outp = new 
FileWriter(file,true);
                                        try {
@@ -418,10 +447,9 @@
                         * save the current configuration to the specified file
                         * default configuration file is configfile
                         */
-                       else if((request.getParam("actionList")).equals("Save 
Configuration")){
+                       else if(actionList.equals("Save Configuration")){
                                synchronized(this){
                                try{
-                                       String file = 
request.getParam("datafile");
                                        if(file.equals("")) file = configfile;
                                        save(out,file);
                                        out.append("Saved Configuration to file 
\""+file+"\"");
@@ -433,8 +461,7 @@
                        /*
                         * load a previously saved configuration
                         */
-                       else if((request.getParam("actionList")).equals("Load 
Configuration")){
-                               String file = request.getParam("datafile");
+                       else if(actionList.equals("Load Configuration")){
                                if(file.equals("")) out.append("Choose an 
existing file \n");
                                else{
                                        reloadOld(file);

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to