Mercurial Hosting > luan
changeset 362:9dbf3433f70f
remove Http.request.get_parameter_values and Http.request.parts;
multiple parameter values are now directly returned from indexing Http.request.parameters;
multipart values are now in parameters;
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 15 Apr 2015 20:33:47 -0600 |
parents | 0581238084ad |
children | 17b02b56d806 |
files | web/src/luan/modules/web/HttpServicer.java |
diffstat | 1 files changed, 17 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
diff -r 0581238084ad -r 9dbf3433f70f web/src/luan/modules/web/HttpServicer.java --- a/web/src/luan/modules/web/HttpServicer.java Wed Apr 15 16:58:51 2015 -0600 +++ b/web/src/luan/modules/web/HttpServicer.java Wed Apr 15 20:33:47 2015 -0600 @@ -123,7 +123,8 @@ LuanTable parameters = new NameTable() { @Override Object get(String name) { - return request.getParameter(name); + String[] a = request.getParameterValues(name); + return a==null ? null : a.length==1 ? a[0] : a; } @Override Iterator<String> names() { @@ -135,7 +136,6 @@ } }; tbl.put( "parameters", parameters ); - add( tbl, "get_parameter_values", String.class ); LuanTable headers = new NameTable() { @Override Object get(String name) { @@ -216,14 +216,13 @@ final MultiPartInputStream mpis = new MultiPartInputStream(in,contentType,null,null); mpis.setDeleteOnExit(true); parameters = Luan.newTable(); - LuanTable parts = Luan.newTable(); for( Part p : mpis.getParts() ) { final MultiPartInputStream.MultiPart part = (MultiPartInputStream.MultiPart)p; String name = part.getName(); + Object value; String filename = part.getContentDispositionFilename(); if( filename == null ) { - String value = new String(part.getBytes()); - parameters.put(name,value); + value = new String(part.getBytes()); } else { LuanTable partTbl = Luan.newPropertyTable(); partTbl.put("filename",filename); @@ -238,11 +237,22 @@ throw new RuntimeException(e); } } } ); - parts.put(name,partTbl); + value = partTbl; + } + Object old = parameters.get(name); + if( old == null ) { + parameters.put(name,value); + } else if( old instanceof Object[] ) { + Object[] aOld = (Object[])old; + Object[] aNew = new Object[aOld.length+1]; + System.arraycopy(aOld,0,aNew,0,aOld.length); + aNew[aOld.length] = value; + parameters.put(name,aNew); + } else { + parameters.put(name,new Object[]{old,value}); } } tbl.put( "parameters", parameters ); - tbl.put( "parts", parts ); } catch(IOException e) { throw new RuntimeException(e); } catch(ServletException e) { @@ -354,11 +364,6 @@ return IoLuan.textWriter(response.getWriter()); } - public LuanTable get_parameter_values(String name) { - Object[] a = request.getParameterValues(name); - return a==null ? null : TableLuan.pack(a); - } - public void send_redirect(String redirectUrl) throws IOException {