Mercurial Hosting > luan
view src/luan/webserver/handlers/ContentTypeHandler.java @ 1234:7e7c2d0c3b99
minor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 12 Apr 2018 18:25:18 -0600 |
parents | 668f29bc52ea |
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; } }