package http.engine;
import http.io.Loader;
import http.io.Source;
import http.resource.StaticResource;
import java.util.Hashtable;
import java.util.StringTokenizer;
import javax.inject.Inject;
import nebula.server.Resource;
import nebula.server.ResourceEngine;
@SuppressWarnings("deprecation")
public class StaticResourceEngine implements ResourceEngine {
protected final Loader loader;
// protected Resource p404;
@Inject
public StaticResourceEngine(Loader loader) {
this.loader = loader;
// Source source = loader.findSource("/404.html");
// p404 = new StaticResource(source,TheMimeTypes.get("html"));
}
@Override
public Resource resolve(String path) {
String extension = path.substring(path.lastIndexOf('.') + 1);
Source source = loader.findSource(path);
if (source != null) {
return new StaticResource(source,TheMimeTypes.get(extension));
}
return null;
}
/**
* Hashtable mapping (String)FILENAME_EXTENSION -> (String)MIME_TYPE
*/
protected static Hashtable<String, String> TheMimeTypes = new Hashtable<String, String>();
static {
//@formatter:off
StringTokenizer st = new StringTokenizer(
"htm text/html "
+ "css text/css "
+ "js application/x-javascript "
+ "html text/html "
+ "txt text/plain "
+ "java text/plain "
+ "ftl text/plain "
+ "asc text/plain "
+ "gif image/gif "
+ "jpg image/jpeg "
+ "jpeg image/jpeg "
+ "png image/png "
+ "mp3 audio/mpeg "
+ "m3u audio/mpeg-url "
+ "pdf application/pdf "
+ "doc application/msword "
+ "ogg application/x-ogg "
+ "zip application/octet-stream "
+ "exe application/octet-stream "
+ "class application/octet-stream "
+ "otf font/opentype "
+ "eot application/vnd.ms-fontobject "
+ "svg image/svg+xml "
+ "ttf font/ttf "
+ "woff font/x-woff ");
//@formatter:on
while (st.hasMoreTokens())
TheMimeTypes.put(st.nextToken(), st.nextToken());
}
}