Author: toad
Date: 2006-08-16 19:57:29 +0000 (Wed, 16 Aug 2006)
New Revision: 10128

Modified:
   trunk/freenet/src/freenet/client/DefaultMIMETypes.java
   trunk/freenet/src/freenet/client/Metadata.java
   trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
   trunk/freenet/src/freenet/clients/http/StaticToadlet.java
   trunk/freenet/src/freenet/node/TextModeClientInterface.java
   trunk/freenet/src/freenet/node/fcp/ClientPut.java
   trunk/freenet/src/freenet/node/fcp/DirPutFile.java
   trunk/freenet/src/freenet/node/fcp/DiskDirPutFile.java
Log:
Auto-detect file type from Identifier if can't detect from Filename on put's.

Modified: trunk/freenet/src/freenet/client/DefaultMIMETypes.java
===================================================================
--- trunk/freenet/src/freenet/client/DefaultMIMETypes.java      2006-08-16 
19:49:54 UTC (rev 10127)
+++ trunk/freenet/src/freenet/client/DefaultMIMETypes.java      2006-08-16 
19:57:29 UTC (rev 10128)
@@ -735,16 +735,18 @@
                addMIMEType((short)612, "x-world/x-vrml", "vrm vrml wrl", 
"vrml");
        }

-       /** Guess a MIME type from a filename */
-       public synchronized static String guessMIMEType(String arg) {
+       /** Guess a MIME type from a filename.
+        * @param noDefault If true, no default MIME type; return null if not 
recognized.
+        * Otherwise if we don't recognize the extension we return 
DEFAULT_MIME_TYPE. */
+       public synchronized static String guessMIMEType(String arg, boolean 
noDefault) {
                int x = arg.lastIndexOf('.');
                if((x == -1) || (x == arg.length()-1))
-                       return DEFAULT_MIME_TYPE;
+                       return noDefault ? null : DEFAULT_MIME_TYPE;
                String ext = arg.substring(x+1).toLowerCase();
                Short mimeIndexOb = (Short) mimeTypesByExtension.get(ext);
                if(mimeIndexOb != null) {
                        return (String) 
mimeTypesByNumber.get(mimeIndexOb.intValue());
-               } else return DEFAULT_MIME_TYPE;
+               } else return noDefault ? null : DEFAULT_MIME_TYPE;
        }

        public synchronized static String getExtension(String type) {

Modified: trunk/freenet/src/freenet/client/Metadata.java
===================================================================
--- trunk/freenet/src/freenet/client/Metadata.java      2006-08-16 19:49:54 UTC 
(rev 10127)
+++ trunk/freenet/src/freenet/client/Metadata.java      2006-08-16 19:57:29 UTC 
(rev 10128)
@@ -458,7 +458,7 @@
                        Metadata target;
                        if(o instanceof String) {
                                // Zip internal redirect
-                               target = new Metadata(ZIP_INTERNAL_REDIRECT, 
key, new ClientMetadata(DefaultMIMETypes.guessMIMEType(key)));
+                               target = new Metadata(ZIP_INTERNAL_REDIRECT, 
key, new ClientMetadata(DefaultMIMETypes.guessMIMEType(key, false)));
                        } else if(o instanceof HashMap) {
                                target = new Metadata((HashMap)o);
                        } else throw new IllegalArgumentException("Not String 
nor HashMap: "+o);
@@ -488,7 +488,7 @@
                        Metadata target;
                        if(o instanceof String) {
                                // Zip internal redirect
-                               target = new Metadata(ZIP_INTERNAL_REDIRECT, 
key, new ClientMetadata(DefaultMIMETypes.guessMIMEType(key)));
+                               target = new Metadata(ZIP_INTERNAL_REDIRECT, 
key, new ClientMetadata(DefaultMIMETypes.guessMIMEType(key, false)));
                        } else if(o instanceof HashMap) {
                                target = new Metadata((HashMap)o);
                        } else throw new IllegalArgumentException("Not String 
nor HashMap: "+o);

Modified: trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2006-08-16 19:49:54 UTC (rev 10127)
+++ trunk/freenet/src/freenet/client/async/SimpleManifestPutter.java    
2006-08-16 19:57:29 UTC (rev 10128)
@@ -253,9 +253,9 @@
                                ManifestElement element = (ManifestElement) o;
                                String mimeType = element.mimeOverride;
                                if(mimeType == null)
-                                       mimeType = 
DefaultMIMETypes.guessMIMEType(name);
+                                       mimeType = 
DefaultMIMETypes.guessMIMEType(name, true);
                                ClientMetadata cm;
-                               
if(mimeType.equals(DefaultMIMETypes.DEFAULT_MIME_TYPE))
+                               if(mimeType == null || 
mimeType.equals(DefaultMIMETypes.DEFAULT_MIME_TYPE))
                                        cm = null;
                                else
                                        cm = new ClientMetadata(mimeType);

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-08-16 
19:49:54 UTC (rev 10127)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-08-16 
19:57:29 UTC (rev 10128)
@@ -178,7 +178,7 @@
                                String filename = request.getParam("filename");
                                File file = new File(filename);
                                String identifier = file.getName() + "-fred-" + 
System.currentTimeMillis();
-                               String contentType = 
DefaultMIMETypes.guessMIMEType(filename);
+                               String contentType = 
DefaultMIMETypes.guessMIMEType(filename, false);
                                try {
                                        ClientPut clientPut = new 
ClientPut(fcp.getGlobalClient(), new FreenetURI("CHK@"), identifier, 
Integer.MAX_VALUE, RequestStarter.BULK_SPLITFILE_PRIORITY_CLASS, 
ClientRequest.PERSIST_FOREVER, null, false, false, -1, 
ClientPutMessage.UPLOAD_FROM_DISK, file, contentType, new FileBucket(file, 
true, false, false, false), null);
                                        clientPut.start();

Modified: trunk/freenet/src/freenet/clients/http/StaticToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StaticToadlet.java   2006-08-16 
19:49:54 UTC (rev 10127)
+++ trunk/freenet/src/freenet/clients/http/StaticToadlet.java   2006-08-16 
19:57:29 UTC (rev 10128)
@@ -57,7 +57,7 @@
                strm.close();
                os.close();

-               ctx.sendReplyHeaders(200, "OK", null, 
DefaultMIMETypes.guessMIMEType(path), data.size());
+               ctx.sendReplyHeaders(200, "OK", null, 
DefaultMIMETypes.guessMIMEType(path, false), data.size());

                ctx.writeData(data);
                data.free();

Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-08-16 
19:49:54 UTC (rev 10127)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java 2006-08-16 
19:57:29 UTC (rev 10128)
@@ -475,7 +475,7 @@
                 line = line.substring(1);
             while((line.length() > 0) && (line.charAt(line.length()-1) == ' '))
                 line = line.substring(0, line.length()-2);
-            String mimeType = DefaultMIMETypes.guessMIMEType(line);
+            String mimeType = DefaultMIMETypes.guessMIMEType(line, false);
             if (line.indexOf('#') > -1) {
                String[] splittedLine = line.split("#");
                line = splittedLine[0];

Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-08-16 19:49:54 UTC 
(rev 10127)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-08-16 19:57:29 UTC 
(rev 10128)
@@ -128,8 +128,11 @@
                // Now go through the fields one at a time
                String mimeType = message.contentType;
                if(mimeType == null && origFilename != null) {
-                       mimeType = 
DefaultMIMETypes.guessMIMEType(origFilename.getName());
+                       mimeType = 
DefaultMIMETypes.guessMIMEType(origFilename.getName(), true);
                }
+               if(mimeType == null) {
+                       mimeType = DefaultMIMETypes.guessMIMEType(identifier, 
true);
+               }
                clientToken = message.clientToken;
                if(persistenceType != PERSIST_CONNECTION)
                        client.register(this, false);

Modified: trunk/freenet/src/freenet/node/fcp/DirPutFile.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/DirPutFile.java  2006-08-16 19:49:54 UTC 
(rev 10127)
+++ trunk/freenet/src/freenet/node/fcp/DirPutFile.java  2006-08-16 19:57:29 UTC 
(rev 10128)
@@ -31,7 +31,7 @@

        protected String guessMIME() {
                // Guess it just from the name
-               return DefaultMIMETypes.guessMIMEType(name);
+               return DefaultMIMETypes.guessMIMEType(name, false /* FIXME? */);
        }

        /**

Modified: trunk/freenet/src/freenet/node/fcp/DiskDirPutFile.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/DiskDirPutFile.java      2006-08-16 
19:49:54 UTC (rev 10127)
+++ trunk/freenet/src/freenet/node/fcp/DiskDirPutFile.java      2006-08-16 
19:57:29 UTC (rev 10128)
@@ -22,7 +22,7 @@
        protected String guessMIME() {
                String mime = super.guessMIME();
                if(mime == null) {
-                       mime = DefaultMIMETypes.guessMIMEType(file.getName());
+                       mime = DefaultMIMETypes.guessMIMEType(file.getName(), 
false /* fixme? */);
                }
                return mime;
        }


Reply via email to