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;
}