/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.clients.fcp;
import java.io.File;
import freenet.client.DefaultMIMETypes;
import freenet.support.SimpleFieldSet;
import freenet.support.api.RandomAccessBucket;
import freenet.support.io.FileBucket;
public class DiskDirPutFile extends DirPutFile {
final File file;
public static DiskDirPutFile create(String name, String contentTypeOverride, SimpleFieldSet subset,
String identifier, boolean global) throws MessageInvalidException {
String s = subset.get("Filename");
if(s == null)
throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "Missing field: Filename on "+name, identifier, global);
File file = new File(s);
String mimeType;
if(contentTypeOverride == null)
mimeType = guessMIME(name, file);
else
mimeType = contentTypeOverride;
return new DiskDirPutFile(name, mimeType, file);
}
// FIXME implement FileHash support
public DiskDirPutFile(String name, String mimeType, File f) {
super(name, mimeType);
this.file = f;
}
protected static String guessMIME(String name, File file) {
String mime = DirPutFile.guessMIME(name);
if(mime == null) {
mime = DefaultMIMETypes.guessMIMEType(file.getName(), false /* fixme? */);
}
return mime;
}
@Override
public RandomAccessBucket getData() {
return new FileBucket(file, true, false, false, false);
}
public File getFile() {
return file;
}
}