comparison 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
comparison
equal deleted inserted replaced
498:ee55be414a34 499:fa4af530697f
85 requestTbl.rawPut("scheme",request.getScheme()); 85 requestTbl.rawPut("scheme",request.getScheme());
86 86
87 LuanTable headersTbl = (LuanTable)requestTbl.rawGet("headers"); 87 LuanTable headersTbl = (LuanTable)requestTbl.rawGet("headers");
88 for( Enumeration<String> enKeys = request.getHeaderNames(); enKeys.hasMoreElements(); ) { 88 for( Enumeration<String> enKeys = request.getHeaderNames(); enKeys.hasMoreElements(); ) {
89 String key = enKeys.nextElement(); 89 String key = enKeys.nextElement();
90 key = key.toLowerCase().replace('-','_');
91 LuanTable values = new LuanTable(); 90 LuanTable values = new LuanTable();
92 for( Enumeration<String> en = request.getHeaders(key); en.hasMoreElements(); ) { 91 for( Enumeration<String> en = request.getHeaders(key); en.hasMoreElements(); ) {
93 values.rawPut(values.rawLength()+1,en.nextElement()); 92 values.rawPut(values.rawLength()+1,en.nextElement());
94 } 93 }
94 key = key.toLowerCase().replace('-','_');
95 headersTbl.rawPut(key,values); 95 headersTbl.rawPut(key,values);
96 } 96 }
97 97
98 LuanTable parametersTbl = (LuanTable)requestTbl.rawGet("parameters"); 98 LuanTable parametersTbl = (LuanTable)requestTbl.rawGet("parameters");
99 String contentType = request.getContentType(); 99 String contentType = request.getContentType();
178 int status = Luan.asInteger(responseTbl.rawGet("status")); 178 int status = Luan.asInteger(responseTbl.rawGet("status"));
179 response.setStatus(status); 179 response.setStatus(status);
180 LuanTable responseHeaders = (LuanTable)responseTbl.rawGet("headers"); 180 LuanTable responseHeaders = (LuanTable)responseTbl.rawGet("headers");
181 for( Map.Entry<Object,Object> entry : responseHeaders.rawIterable() ) { 181 for( Map.Entry<Object,Object> entry : responseHeaders.rawIterable() ) {
182 String name = (String)entry.getKey(); 182 String name = (String)entry.getKey();
183 name = name.replace('_','-'); 183 name = toHeaderName(name);
184 LuanTable values = (LuanTable)entry.getValue(); 184 LuanTable values = (LuanTable)entry.getValue();
185 for( Object value : values.asList() ) { 185 for( Object value : values.asList() ) {
186 if( value instanceof String ) { 186 if( value instanceof String ) {
187 response.setHeader(name,(String)value); 187 response.setHeader(name,(String)value);
188 continue; 188 continue;
201 } 201 }
202 202
203 203
204 204
205 // static utils 205 // static utils
206
207 public static String toHeaderName(String luanName) {
208 StringBuilder buf = new StringBuilder();
209 boolean capitalize = true;
210 char[] a = luanName.toCharArray();
211 for( int i=0; i<a.length; i++ ) {
212 char c = a[i];
213 if( c == '_' ) {
214 a[i] = '-';
215 capitalize = true;
216 } else if( capitalize ) {
217 a[i] = Character.toUpperCase(c);
218 capitalize = false;
219 }
220 }
221 return String.valueOf(a);
222 }
206 223
207 private static String escape(String value) { 224 private static String escape(String value) {
208 return value.replaceAll(";", "%3B"); 225 return value.replaceAll(";", "%3B");
209 } 226 }
210 227