ln.http/HttpHeaders.cs

37 lines
1.3 KiB
C#

using System;
using ln.types.btree;
using System.Collections.Generic;
using System.Collections;
namespace ln.http
{
public class HttpHeaders : IEnumerable<HttpHeader>
{
MappingBTree<string, HttpHeader> headers = new MappingBTree<string, HttpHeader>((value) => value.Name);
public HttpHeaders()
{
}
public HttpHeader this[string headerName] => headers[headerName.ToUpper()];
public bool Contains(string headerName) => headers.ContainsKey(headerName.ToUpper());
public void Add(String headerName, String headerValue) => Add(new HttpHeader(headerName, headerValue));
public void Add(HttpHeader httpHeader) => headers.Add(httpHeader);
public void Remove(HttpHeader httpHeader) => headers.Remove(httpHeader);
public void Remove(string headerName) => headers.RemoveKey(headerName.ToUpper());
public void Set(String headerName, String headerValue)
{
if (headers.ContainsKey(headerName))
Remove(headerName);
Add(new HttpHeader(headerName, headerValue));
}
public IEnumerator<HttpHeader> GetEnumerator() => headers.Values.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => headers.Values.GetEnumerator();
}
}