Mercurial Hosting > luan
view src/luan/webserver/handlers/ContentTypeHandler.java @ 1148:49fb4e83484f
webserver - change headers to lower case
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 04 Feb 2018 17:11:06 -0700 |
parents | c123ee15f99b |
children | 668f29bc52ea |
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 { public final static String CONTENT_TYPE = "content-type"; 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 htmlType = "text/html; charset=" + charset; String textType = "text/plain; charset=" + charset; contentTypeForNoExtension = htmlType; map.put( "html", htmlType ); map.put( "txt", textType ); // 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; } }