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");
 	}