Mercurial Hosting > luan
diff http/src/luan/modules/http/HttpServicer.java @ 499:fa4af530697f
add http/dump
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 18 May 2015 14:24:50 -0600 |
parents | ee55be414a34 |
children | ab9c2afefb47 |
line wrap: on
line diff
--- a/http/src/luan/modules/http/HttpServicer.java Mon May 18 00:25:35 2015 -0600 +++ b/http/src/luan/modules/http/HttpServicer.java Mon May 18 14:24:50 2015 -0600 @@ -87,11 +87,11 @@ LuanTable headersTbl = (LuanTable)requestTbl.rawGet("headers"); for( Enumeration<String> enKeys = request.getHeaderNames(); enKeys.hasMoreElements(); ) { String key = enKeys.nextElement(); - key = key.toLowerCase().replace('-','_'); LuanTable values = new LuanTable(); for( Enumeration<String> en = request.getHeaders(key); en.hasMoreElements(); ) { values.rawPut(values.rawLength()+1,en.nextElement()); } + key = key.toLowerCase().replace('-','_'); headersTbl.rawPut(key,values); } @@ -180,7 +180,7 @@ LuanTable responseHeaders = (LuanTable)responseTbl.rawGet("headers"); for( Map.Entry<Object,Object> entry : responseHeaders.rawIterable() ) { String name = (String)entry.getKey(); - name = name.replace('_','-'); + name = toHeaderName(name); LuanTable values = (LuanTable)entry.getValue(); for( Object value : values.asList() ) { if( value instanceof String ) { @@ -204,6 +204,23 @@ // static utils + public static String toHeaderName(String luanName) { + StringBuilder buf = new StringBuilder(); + boolean capitalize = true; + char[] a = luanName.toCharArray(); + for( int i=0; i<a.length; i++ ) { + char c = a[i]; + if( c == '_' ) { + a[i] = '-'; + capitalize = true; + } else if( capitalize ) { + a[i] = Character.toUpperCase(c); + capitalize = false; + } + } + return String.valueOf(a); + } + private static String escape(String value) { return value.replaceAll(";", "%3B"); }