001: /* $Id: HTTPRequestHeader.java,v 1.5 2002/10/04 21:23:37 wastl Exp $ */
002: package net.wastl.webmail.server.http;
003:
004: import java.io.*;
005: import java.util.*;
006: import java.net.URLDecoder;
007: import net.wastl.webmail.misc.ByteStore;
008:
009: /**
010: * HTTPHeader.java
011: *
012: *
013: * Created: Tue Feb 2 15:25:48 1999
014: *
015: * @author Sebastian Schaffert
016: * @version
017: */
018:
019: public class HTTPRequestHeader {
020:
021: private Hashtable content;
022:
023: private Hashtable headers;
024:
025: public HTTPRequestHeader() {
026: headers = new Hashtable(10, .9f);
027: content = new Hashtable(5, .9f);
028: }
029:
030: public String getMethod() {
031: return getHeader("Method");
032: }
033:
034: public String getPath() {
035: return getHeader("Path");
036: }
037:
038: public String getVersion() {
039: return getHeader("Version");
040: }
041:
042: public void setPath(String s) {
043: setHeader("PATH", URLDecoder.decode(s));
044: }
045:
046: public void setMethod(String s) {
047: setHeader("METHOD", s);
048: }
049:
050: public void setVersion(String s) {
051: setHeader("VERSION", s);
052: }
053:
054: public void setHeader(String key, String value) {
055: if (headers == null) {
056: headers = new Hashtable();
057: }
058: headers.put(key.toUpperCase(), value);
059: }
060:
061: public String getHeader(String t) {
062: return (String) headers.get(t.toUpperCase());
063: }
064:
065: public Hashtable getContent() {
066: return content;
067: }
068:
069: public Object getObjContent(String key) {
070: if (content != null) {
071: return content.get(key.toUpperCase());
072: } else {
073: return null;
074: }
075: }
076:
077: public String getContent(String key) {
078: if (content != null) {
079: Object o = content.get(key.toUpperCase());
080: if (o == null) {
081: return null;
082: } else if (o instanceof String) {
083: return (String) o;
084: } else if (o instanceof ByteStore) {
085: return new String(((ByteStore) o).getBytes());
086: } else {
087: return "";
088: }
089: } else {
090: return "";
091: }
092: }
093:
094: public boolean isContentSet(String key) {
095: Object s = content.get(key.toUpperCase());
096: return s != null
097: && !(s instanceof String && ((String) s).trim().equals(
098: ""));
099: }
100:
101: public void setContent(String key, Object value) {
102: content.put(key.toUpperCase(), value);
103: }
104:
105: public Enumeration getHeaderKeys() {
106: return headers.keys();
107: }
108:
109: public Enumeration getContentKeys() {
110: return content.keys();
111: }
112:
113: public String toString() {
114: String s = "Method: " + headers.get("METHOD") + ", Path="
115: + headers.get("PATH") + ", HTTP-version: "
116: + headers.get("VERSION") + "\n";
117: s += "HTTP Headers:\n";
118: Enumeration e = headers.keys();
119: while (e.hasMoreElements()) {
120: String h = (String) e.nextElement();
121: s += "Header name: " + h + ", value: " + headers.get(h)
122: + "\n";
123: }
124: if (content != null) {
125: s += "Form Content:\n";
126: e = content.keys();
127: while (e.hasMoreElements()) {
128: String h = (String) e.nextElement();
129: s += "Header name: " + h + ", value: " + content.get(h)
130: + "\n";
131: }
132: }
133: return s;
134: }
135:
136: } // HTTPHeader
|