Mercurial Hosting > luan
view src/luan/webserver/handlers/ContentTypeHandler.java @ 1331:02fe660e7748
minor fix
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 11 Feb 2019 02:17:41 -0700 |
parents | 7e7c2d0c3b99 |
children |
line wrap: on
line source
package luan.webserver.handlers; import java.util.Map; import java.util.HashMap; import luan.webserver.Handler; import luan.webserver.Request; import luan.webserver.Response; public class ContentTypeHandler implements Handler { private final Handler handler; // maps extension to content-type // key must be lower case public final Map<String,String> map = new HashMap<String,String>(); // set to null for none public String contentTypeForNoExtension; public ContentTypeHandler(Handler handler) { this(handler,"utf-8"); } public ContentTypeHandler(Handler handler,String charset) { this.handler = handler; String attrs = charset== null ? "" : "; charset="+charset; String htmlType = "text/html" + attrs; String textType = "text/plain" + attrs; contentTypeForNoExtension = htmlType; map.put( "html", htmlType ); map.put( "txt", textType ); map.put( "css", "text/css" ); // add more as need } public Response handle(Request request) { Response response = handler.handle(request); if( response!=null && !response.headers.containsKey("content-type") ) { String path = request.path; int iSlash = path.lastIndexOf('/'); int iDot = path.lastIndexOf('.'); String type; if( iDot < iSlash ) { // no extension type = contentTypeForNoExtension; } else { // extension String extension = path.substring(iDot+1); type = map.get( extension.toLowerCase() ); } if( type != null ) response.headers.put("content-type",type); } return response; } }