package javaforce.service; /** * Created : Aug 23, 2013 */ import java.io.*; import java.util.*; public class WebRequest { //public fields public String request; public String fields[]; public String fields0[]; public InputStream is; public String cookies[]; //name=value;... public static HashMap<String, Session> sessions = new HashMap<String, Session>(); public Session session; public String serverIP, remoteIP; public int serverPort, remotePort; public String method; public static class Session { public String id; public HashMap<String, Object> props = new HashMap<String, Object>(); public void setAttribute(String key, Object value) {props.put(key, value);} public Object getAttribute(String key) {return props.get(key);} } public Session getSession() {return session;} public String getQueryString() { int idx = fields0[1].indexOf("?"); if (idx == -1) return ""; return fields0[1].substring(idx+1); } public String getURL() { int idx = fields0[1].indexOf("?"); if (idx == -1) return fields0[1]; return fields0[1].substring(0, idx); } public String getCookie(String name) { name += "="; for(int a=0;a<cookies.length;a++) { if (cookies[a].startsWith(name)) { return cookies[a].substring(name.length()); } } return null; } public String getHeader(String name) { name += ":"; for(int a=0;a<fields.length;a++) { if (fields[a].startsWith(name)) { return fields[a].substring(name.length()).trim(); } } return null; } private String randomID() { Random r = new Random(); return "" + r.nextLong() + "-" + r.nextLong() + "-" + System.currentTimeMillis(); } void init(WebResponse res) { ArrayList<String> list = new ArrayList<String>(); for(int a=1;a<fields.length;a++) { if (fields[a].startsWith("Cookie: ")) { String sets[] = fields[a].substring(8).split(";"); for(int b=0;b<sets.length;b++) { list.add(sets[b].trim()); } } } cookies = list.toArray(new String[0]); String id = getCookie("jsession-id"); String orgid = id; if (id == null) { id = randomID(); res.addCookie("jsession-id", id); session = new Session(); session.id = id; sessions.put(id, session); } else { session = sessions.get(id); if (session == null) { session = new Session(); session.id = id; sessions.put(id, session); } } } public String getHost() { String host = getHeader("Host"); if (host == null) return ""; int idx = host.indexOf(":"); if (idx == -1) return host; return host.substring(0, idx); } public String getLocalAddr() { return serverIP; } public int getLocalPort() { return serverPort; } public String getRemoteAddr() { return remoteIP; } public int getRemotePort() { return remotePort; } public String getMethod() { return method; } public InputStream getInputStream() { return is; } };