77 lines
2.3 KiB
C#
77 lines
2.3 KiB
C#
|
// /**
|
|||
|
// * File: HeaderContainer.cs
|
|||
|
// * Author: haraldwolff
|
|||
|
// *
|
|||
|
// * This file and it's content is copyrighted by the Author and / or copyright holder.
|
|||
|
// * Any use wihtout proper permission is illegal and may lead to legal actions.
|
|||
|
// *
|
|||
|
// *
|
|||
|
// **/
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Text;
|
|||
|
using ln.http.io;
|
|||
|
namespace ln.http.message
|
|||
|
{
|
|||
|
public class HeaderContainer
|
|||
|
{
|
|||
|
Dictionary<string, Header> headers = new Dictionary<string, Header>();
|
|||
|
|
|||
|
public HeaderContainer()
|
|||
|
{
|
|||
|
}
|
|||
|
public HeaderContainer(Stream stream):this(new UnbufferedStreamReader(stream))
|
|||
|
{
|
|||
|
}
|
|||
|
public HeaderContainer(TextReader reader)
|
|||
|
{
|
|||
|
List<String> headerLines = new List<string>();
|
|||
|
string currentline = reader.ReadLine();
|
|||
|
while (!currentline.Equals(string.Empty))
|
|||
|
{
|
|||
|
if (char.IsWhiteSpace(currentline[0]))
|
|||
|
{
|
|||
|
headerLines[headerLines.Count - 1] = headerLines[headerLines.Count - 1] + currentline;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
headerLines.Add(currentline);
|
|||
|
}
|
|||
|
currentline = reader.ReadLine();
|
|||
|
}
|
|||
|
|
|||
|
foreach (string headerLine in headerLines)
|
|||
|
{
|
|||
|
Header header = new Header(headerLine);
|
|||
|
headers.Add(header.Name, header);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public Header this[string name]
|
|||
|
{
|
|||
|
get => headers[name.ToUpper()];
|
|||
|
}
|
|||
|
|
|||
|
public void Add(Header header)=> headers.Add(header.Name, header);
|
|||
|
|
|||
|
public bool ContainsKey(string name) => headers.ContainsKey(name.ToUpper());
|
|||
|
public bool Contains(string name) => headers.ContainsKey(name.ToUpper());
|
|||
|
public string Get(string name) => this[name].Value;
|
|||
|
public void Set(string name,string value)
|
|||
|
{
|
|||
|
name = name.ToUpper();
|
|||
|
if (!headers.TryGetValue(name,out Header header))
|
|||
|
{
|
|||
|
header = new Header(name);
|
|||
|
headers.Add(name, header);
|
|||
|
}
|
|||
|
header.Value = value;
|
|||
|
}
|
|||
|
public void Remove(string name) => headers.Remove(name.ToUpper());
|
|||
|
|
|||
|
public IEnumerable<string> Keys => headers.Keys;
|
|||
|
|
|||
|
}
|
|||
|
}
|