Mercurial Hosting > luan
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 |