1 package com.quadcap.http.server22; 2 3 40 41 import java.io.ByteArrayInputStream ; 42 import java.io.IOException ; 43 44 import java.util.Vector ; 45 46 import javax.servlet.http.Cookie ; 47 48 import com.quadcap.util.text.OctetMap; 49 import com.quadcap.util.text.Scanner; 50 51 import com.quadcap.util.Debug; 52 53 58 public class CookieParser { 59 Scanner s = null; 60 61 public CookieParser(String cookieHdr) { 62 if (cookieHdr == null) cookieHdr = ""; 63 ByteArrayInputStream bis = 64 new ByteArrayInputStream (cookieHdr.getBytes()); 65 s = new Scanner(bis); 66 } 67 68 Cookie [] parseCookies() throws IOException { 69 Vector cookieVec = new Vector (); 70 Cookie cookie = null; 71 s.skipWhile(OctetMap.wsChars); 72 while (OctetMap.tokenChars.has(s.peek())) { 73 String name = s.parseWhile(OctetMap.tokenChars); 74 String val = null; 75 if (s.peek() == '=') { 76 s.matchChar('='); 77 if (s.peek() == '"') { 78 s.matchChar('"'); 79 val = s.parseUntil(OctetMap.dquoteChar); 80 s.matchChar('"'); 81 } else { 82 val = s.parseWhile(OctetMap.tokenChars); 83 } 84 } 85 s.skipWhile(OctetMap.wsChars); 86 if (s.peek() == ';') { 87 s.matchChar(';'); 88 s.skipWhile(OctetMap.wsChars); 89 } 90 91 if (name.charAt(0) == '$' && cookie != null) { 92 if (name.equals("$Path")) { 93 cookie.setPath(val); 94 } else if (name.equals("$Domain")) { 95 cookie.setDomain(val); 96 } 97 } else { 98 if (Trace.level() > 2) { 100 Debug.println("Cookie: " + name + " = " + val); 101 } 102 cookie = new Cookie (name, val); 104 cookieVec.addElement(cookie); 105 } 106 } 107 Cookie [] cookies = new Cookie [cookieVec.size()]; 108 for (int i = 0; i < cookies.length; i++) { 109 cookies[i] = (Cookie )cookieVec.elementAt(i); 110 } 111 return cookies; 112 } 113 } 114 | Popular Tags |