Mercurial Hosting > luan
annotate src/luan/webserver/Util.java @ 1147:30d87b7d1d62
webserver - support multipart/form-data
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 01 Feb 2018 22:06:37 -0700 |
parents | 2dda3c92a473 |
children | 220228bf1af9 |
rev | line source |
---|---|
1146
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
1 package luan.webserver; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
2 |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
3 import java.io.UnsupportedEncodingException; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
4 import java.net.URLDecoder; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
5 import java.net.URLEncoder; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
6 import java.util.Map; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
7 import java.util.List; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
8 import java.util.ArrayList; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
9 |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
10 |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
11 final class Util { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
12 |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
13 static String urlDecode(String s) { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
14 try { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
15 return URLDecoder.decode(s,"UTF-8"); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
16 } catch(UnsupportedEncodingException e) { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
17 throw new RuntimeException(e); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
18 } |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
19 } |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
20 |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
21 static String urlEncode(String s) { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
22 try { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
23 return URLEncoder.encode(s,"UTF-8"); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
24 } catch(UnsupportedEncodingException e) { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
25 throw new RuntimeException(e); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
26 } |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
27 } |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
28 |
1147
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
29 static void add(Map<String,Object> map,String name,Object value) { |
1146
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
30 Object current = map.get(name); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
31 if( current == null ) { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
32 map.put(name,value); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
33 } else if( current instanceof List ) { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
34 List list = (List)current; |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
35 list.add(value); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
36 } else { |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
37 List list = new ArrayList(); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
38 list.add(current); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
39 list.add(value); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
40 map.put(name,list); |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
41 } |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
42 } |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
43 |
1147
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
44 static String toString(byte[] a) { |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
45 char[] ac = new char[a.length]; |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
46 for( int i=0; i<a.length; i++ ) { |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
47 ac[i] = (char)a[i]; |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
48 } |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
49 return new String(ac); |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
50 } |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
51 |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
52 static byte[] toBytes(String s) { |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
53 char[] ac = s.toCharArray(); |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
54 byte[] a = new byte[ac.length]; |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
55 for( int i=0; i<ac.length; i++ ) { |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
56 a[i] = (byte)ac[i]; |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
57 } |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
58 return a; |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
59 } |
30d87b7d1d62
webserver - support multipart/form-data
Franklin Schmidt <fschmidt@gmail.com>
parents:
1146
diff
changeset
|
60 |
1146
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
61 private Util() {} // never |
2dda3c92a473
webserver - implement cookies
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff
changeset
|
62 } |