diff options
Diffstat (limited to 'pki/base/util/src/com/netscape/cmsutil/http/HttpMessage.java')
-rw-r--r-- | pki/base/util/src/com/netscape/cmsutil/http/HttpMessage.java | 163 |
1 files changed, 0 insertions, 163 deletions
diff --git a/pki/base/util/src/com/netscape/cmsutil/http/HttpMessage.java b/pki/base/util/src/com/netscape/cmsutil/http/HttpMessage.java deleted file mode 100644 index badec5930..000000000 --- a/pki/base/util/src/com/netscape/cmsutil/http/HttpMessage.java +++ /dev/null @@ -1,163 +0,0 @@ -// --- BEGIN COPYRIGHT BLOCK --- -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation; version 2 of the License. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License along -// with this program; if not, write to the Free Software Foundation, Inc., -// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -// -// (C) 2007 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cmsutil.http; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.util.Enumeration; -import java.util.Hashtable; - -/** - * Basic HTTP Message, excluding message body. - * Not optimized for performance. - * Set fields or parse from input. - */ -public class HttpMessage { - protected String mLine = null; // request or response line. - protected Hashtable<String, String> mHeaders = null; - protected String mContent = null; // arbitrary content chars assumed. - - /** - * Instantiate a HttpResponse for write to http client. - */ - public HttpMessage() { - mHeaders = new Hashtable<String, String>(); - } - - /** - * Set a header field. <br> - * Content-length is automatically set on write.<br> - * If value spans multiple lines must be in proper http format for - * multiple lines. - */ - public void setHeader(String name, String value) { - if (mHeaders == null) - mHeaders = new Hashtable<String, String>(); - mHeaders.put(name.toLowerCase(), value); - } - - /** - * get a header - */ - public String getHeader(String name) { - return (String) mHeaders.get(name.toLowerCase()); - } - - /** - * write http headers - * does not support values of more than one line - */ - public void writeHeaders(OutputStreamWriter writer) - throws IOException { - if (mHeaders != null) { - Enumeration<String> keys = mHeaders.keys(); - String header, value; - - while (keys.hasMoreElements()) { - header = keys.nextElement(); - value = mHeaders.get(header); - writer.write(header + ":" + value + Http.CRLF); - } - } - writer.write(Http.CRLF); // end with CRLF line. - } - - /** - * read http headers. - * does not support values of more than one line or multivalue headers. - */ - public void readHeaders(BufferedReader reader) - throws IOException { - mHeaders = new Hashtable<String, String>(); - - int colon; - String line, key, value; - - while (true) { - line = reader.readLine(); - if (line == null || line.equals("")) - break; - colon = line.indexOf(':'); - if (colon == -1) { - mHeaders = null; - throw new HttpProtocolException("Bad Http header format"); - } - key = line.substring(0, colon); - value = line.substring(colon + 1); - mHeaders.put(key.toLowerCase(), value.trim()); - } - } - - public void write(OutputStreamWriter writer) - throws IOException { - writer.write(mLine + Http.CRLF); - writeHeaders(writer); - writer.flush(); - if (mContent != null) { - writer.write(mContent); - } - writer.flush(); - } - - public void parse(BufferedReader reader) - throws IOException { - String line = reader.readLine(); - - // if (line == null) { - // throw new HttpEofException("End of stream reached"); - // } - if (line.equals("")) { - throw new HttpProtocolException("Bad Http req/resp line " + line); - } - mLine = line; - readHeaders(reader); - - // won't work if content length is not set. - String lenstr = mHeaders.get("content-length"); - - if (lenstr != null) { - int len = Integer.parseInt(lenstr); - char[] cbuf = new char[len]; - int done = reader.read(cbuf, 0, cbuf.length); - int total = done; - - while (done >= 0 && total < len) { - done = reader.read(cbuf, total, len - total); - total += done; - } - - mContent = new String(cbuf); - } - } - - public void reset() { - mLine = null; - mHeaders = null; - mContent = null; - } - - public void setContent(String content) { - mContent = content; - } - - public String getContent() { - return mContent; - } - -} |