106 lines
2.2 KiB
Java
106 lines
2.2 KiB
Java
package org.hwo.net.http;
|
|
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.Hashtable;
|
|
import java.util.List;
|
|
|
|
import org.hwo.StringHelper;
|
|
import org.hwo.io.StreamReader;
|
|
|
|
public class MessageHeaders {
|
|
|
|
private Hashtable<String, List<String>> headers;
|
|
|
|
public MessageHeaders()
|
|
{
|
|
headers = new Hashtable<String, List<String>>();
|
|
}
|
|
|
|
public void read(StreamReader reader) throws IOException
|
|
{
|
|
String line;
|
|
String headerName = null;
|
|
List<String> values = new ArrayList<String>();
|
|
|
|
while (true)
|
|
{
|
|
line = reader.readLine();
|
|
if ((line == null) || (line.length() == 0))
|
|
{
|
|
break;
|
|
} else if (line.charAt(0) <= 32)
|
|
{
|
|
String stripped = line.trim();
|
|
if (stripped.length() > 0)
|
|
{
|
|
values.add(stripped);
|
|
}
|
|
} else
|
|
{
|
|
int p = line.indexOf(':');
|
|
headerName = line.substring(0,p);
|
|
values = getHeaderValueList(headerName);
|
|
values.add(line.substring(p+1).trim());
|
|
}
|
|
}
|
|
}
|
|
|
|
private List<String> getHeaderValueList(String headerName)
|
|
{
|
|
List<String> values;
|
|
|
|
if (!headers.containsKey(headerName))
|
|
{
|
|
values = new ArrayList<String>();
|
|
headers.put(headerName, values);
|
|
System.err.println("New Header: " + headerName);
|
|
} else
|
|
{
|
|
values = headers.get(headerName);
|
|
System.err.println("Appending Header: " + headerName);
|
|
}
|
|
return values;
|
|
}
|
|
|
|
public void addHeader(String headerName,String headerValue)
|
|
{
|
|
}
|
|
|
|
public String getHeaderValue(String headerName)
|
|
{
|
|
String[] values = getHeaderValues(headerName);
|
|
if (values.length > 0)
|
|
return StringHelper.join(values, " ");
|
|
return null;
|
|
}
|
|
|
|
public String[] getHeaderValues(String headerName)
|
|
{
|
|
if (headers.containsKey(headerName))
|
|
{
|
|
return headers.get(headerName).toArray(new String[0]);
|
|
}
|
|
return new String[0];
|
|
}
|
|
|
|
public String[] getHeaderNames()
|
|
{
|
|
return headers.keySet().toArray(new String[0]);
|
|
}
|
|
|
|
public void setHeaderValue(String headerName,String headerValue)
|
|
{
|
|
List<String> values = new ArrayList<String>();
|
|
values.add(headerValue);
|
|
headers.put(headerName, values);
|
|
}
|
|
|
|
public void addHeaderValue(String headerName,String headerValue)
|
|
{
|
|
getHeaderValueList(headerName).add(headerValue);
|
|
}
|
|
|
|
|
|
}
|